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,
40 EC_IOCTL_SET_PROFILEBUNDLE,
41 //EC_IOCTL_REMOVE_PROBE,
42 EC_IOCTL_RESET_PROBES,
43 EC_IOCTL_SET_COMPLEX_PROBES,
46 EC_IOCTL_ATTACH, // attaches selected probes
47 EC_IOCTL_ACTIVATE, // START
49 // stop is common for both tracing and profiling
50 EC_IOCTL_STOP_AND_DETACH, // STOP (and detach for TRACING)
52 // kernel to user notification delivery
53 EC_IOCTL_WAIT_NOTIFICATION,
57 EC_IOCTL_GET_COMPLEX_STATUS,
58 EC_IOCTL_CONSUME_BUFFER,
61 EC_IOCTL_UPDATE_CONDS,
67 EC_IOCTL_SET_EVENT_MASK,
68 EC_IOCTL_GET_EVENT_MASK,
70 // pre-defined user space probes
71 EC_IOCTL_SET_PREDEF_UPROBES,
72 EC_IOCTL_GET_PREDEF_UPROBES,
73 EC_IOCTL_GET_PREDEF_UPROBES_SIZE,
81 unsigned notification_count;
83 } ioctl_wait_notification_t;
88 unsigned int m_unsignedInt;
90 unsigned long m_unsignedLong;
96 OPERATION_ANY, // means do not check value
105 unsigned m_condition_always_false;
109 unsigned m_op_probe_id;
110 // char m_probe_name[SWAP_COMMON_STRING_SIZE];
111 unsigned m_op_record_type;
113 unsigned m_time_usec;
117 unsigned m_record_type;
122 // condition matching any event
123 #define CONDITION_ANY \
125 .m_condition_always_false = 0, \
126 .m_op_time = OPERATION_ANY, \
127 .m_op_pid = OPERATION_ANY, \
128 .m_op_tid = OPERATION_ANY, \
129 .m_op_probe_id = OPERATION_ANY, \
130 .m_op_record_type = OPERATION_ANY, \
133 // never matching condition
134 #define CONDITION_FALSE \
136 .m_condition_always_false = 1, \
137 .m_op_time = OPERATION_ANY, \
138 .m_op_pid = OPERATION_ANY, \
139 .m_op_tid = OPERATION_ANY, \
140 .m_op_probe_id = OPERATION_ANY, \
141 .m_op_record_type = OPERATION_ANY, \
144 // default start condition - start immediately
145 #define DEFAULT_START_CONDITION CONDITION_ANY
146 // default stop condition - never stop
147 #define DEFAULT_STOP_CONDITION CONDITION_FALSE
154 } ioctl_set_pids_to_ignore_t;
163 signed char reg; // -1 - memory, 0..127 - register number
165 } ioctl_usr_space_vtp_t;
172 } ioctl_usr_space_ip_t;
179 ioctl_usr_space_ip_t *p_ips;
181 ioctl_usr_space_vtp_t *p_vtps;
182 } ioctl_usr_space_lib_t;
189 ioctl_usr_space_lib_t *p_libs;
190 } ioctl_inst_usr_space_proc_t;
196 } ioctl_set_proc_to_ignore_t;
204 // exclude entry events
205 #define IOCTL_EMASK_ENTRY 0x01
206 // exclude exit events
207 #define IOCTL_EMASK_EXIT 0x02
209 #define IOCTL_EMASK_TIME 0x04
211 #define IOCTL_EMASK_PID 0x08
213 #define IOCTL_EMASK_TID 0x10
215 #define IOCTL_EMASK_CPU 0x20
217 #define IOCTL_EMASK_ARGS 0x40
221 unsigned probes_count;
223 } ioctl_predef_uprobes_info_t;
226 #endif /* !defined(ec_ioctl_h) */