1 ////////////////////////////////////////////////////////////////////////////////////
8 // AUTHOR: L.Komkov, S.Dianov, A.Gerenkov
9 // COMPANY NAME: Samsung Research Center in Moscow
10 // DEPT NAME: Advanced Software Group
11 // CREATED: 2008.02.15
13 // REVISION DATE: 2008.12.02
15 ////////////////////////////////////////////////////////////////////////////////////
17 #if !defined(ec_ioctl_h)
20 #include "ec_info.h" // ec_info_t
29 // buffer manipulation
30 EC_IOCTL_SET_BUFFER_SIZE,
31 EC_IOCTL_GET_BUFFER_SIZE,
32 EC_IOCTL_RESET_BUFFER,
35 EC_IOCTL_SELECT_PROBE,
36 EC_IOCTL_DESELECT_PROBE,
37 EC_IOCTL_GET_PROBE_INFO,
39 //EC_IOCTL_REMOVE_PROBE,
40 EC_IOCTL_RESET_PROBES,
41 EC_IOCTL_SET_COMPLEX_PROBES,
44 EC_IOCTL_ATTACH, // attaches selected probes
45 EC_IOCTL_ACTIVATE, // START
47 // stop is common for both tracing and profiling
48 EC_IOCTL_STOP_AND_DETACH, // STOP (and detach for TRACING)
50 // kernel to user notification delivery
51 EC_IOCTL_WAIT_NOTIFICATION,
55 EC_IOCTL_GET_COMPLEX_STATUS,
56 EC_IOCTL_CONSUME_BUFFER,
58 // instrument user space process
59 EC_IOCTL_INST_USR_SPACE_PROC,
60 // deinstrument user space process
61 EC_IOCTL_DEINST_USR_SPACE_PROC,
64 EC_IOCTL_UPDATE_CONDS,
70 EC_IOCTL_SET_EVENT_MASK,
71 EC_IOCTL_GET_EVENT_MASK,
73 // pre-defined user space probes
74 EC_IOCTL_SET_PREDEF_UPROBES,
75 EC_IOCTL_GET_PREDEF_UPROBES,
76 EC_IOCTL_GET_PREDEF_UPROBES_SIZE,
82 unsigned notification_count;
84 } ioctl_wait_notification_t;
89 unsigned int m_unsignedInt;
91 unsigned long m_unsignedLong;
97 OPERATION_ANY, // means do not check value
106 unsigned m_condition_always_false;
110 unsigned m_op_probe_id;
111 // char m_probe_name[SWAP_COMMON_STRING_SIZE];
112 unsigned m_op_record_type;
114 unsigned m_time_usec;
118 unsigned m_record_type;
123 // condition matching any event
124 #define CONDITION_ANY \
126 .m_condition_always_false = 0, \
127 .m_op_time = OPERATION_ANY, \
128 .m_op_pid = OPERATION_ANY, \
129 .m_op_tid = OPERATION_ANY, \
130 .m_op_probe_id = OPERATION_ANY, \
131 .m_op_record_type = OPERATION_ANY, \
134 // never matching condition
135 #define CONDITION_FALSE \
137 .m_condition_always_false = 1, \
138 .m_op_time = OPERATION_ANY, \
139 .m_op_pid = OPERATION_ANY, \
140 .m_op_tid = OPERATION_ANY, \
141 .m_op_probe_id = OPERATION_ANY, \
142 .m_op_record_type = OPERATION_ANY, \
145 // default start condition - start immediately
146 #define DEFAULT_START_CONDITION CONDITION_ANY
147 // default stop condition - never stop
148 #define DEFAULT_STOP_CONDITION CONDITION_FALSE
155 } ioctl_set_pids_to_ignore_t;
164 signed char reg; // -1 - memory, 0..127 - register number
166 } ioctl_usr_space_vtp_t;
173 } ioctl_usr_space_ip_t;
180 ioctl_usr_space_ip_t *p_ips;
182 ioctl_usr_space_vtp_t *p_vtps;
183 } ioctl_usr_space_lib_t;
190 ioctl_usr_space_lib_t *p_libs;
191 } ioctl_inst_usr_space_proc_t;
197 } ioctl_set_proc_to_ignore_t;
205 // exclude entry events
206 #define IOCTL_EMASK_ENTRY 0x01
207 // exclude exit events
208 #define IOCTL_EMASK_EXIT 0x02
210 #define IOCTL_EMASK_TIME 0x04
212 #define IOCTL_EMASK_PID 0x08
214 #define IOCTL_EMASK_TID 0x10
216 #define IOCTL_EMASK_CPU 0x20
218 #define IOCTL_EMASK_ARGS 0x40
222 unsigned probes_count;
224 } ioctl_predef_uprobes_info_t;
227 #endif /* !defined(ec_ioctl_h) */