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,
77 // error consist of wrong path to apps or libs
78 EC_IOCTL_GET_LAST_ERROR,
83 unsigned notification_count;
85 } ioctl_wait_notification_t;
90 unsigned int m_unsignedInt;
92 unsigned long m_unsignedLong;
98 OPERATION_ANY, // means do not check value
107 unsigned m_condition_always_false;
111 unsigned m_op_probe_id;
112 // char m_probe_name[SWAP_COMMON_STRING_SIZE];
113 unsigned m_op_record_type;
115 unsigned m_time_usec;
119 unsigned m_record_type;
124 // condition matching any event
125 #define CONDITION_ANY \
127 .m_condition_always_false = 0, \
128 .m_op_time = OPERATION_ANY, \
129 .m_op_pid = OPERATION_ANY, \
130 .m_op_tid = OPERATION_ANY, \
131 .m_op_probe_id = OPERATION_ANY, \
132 .m_op_record_type = OPERATION_ANY, \
135 // never matching condition
136 #define CONDITION_FALSE \
138 .m_condition_always_false = 1, \
139 .m_op_time = OPERATION_ANY, \
140 .m_op_pid = OPERATION_ANY, \
141 .m_op_tid = OPERATION_ANY, \
142 .m_op_probe_id = OPERATION_ANY, \
143 .m_op_record_type = OPERATION_ANY, \
146 // default start condition - start immediately
147 #define DEFAULT_START_CONDITION CONDITION_ANY
148 // default stop condition - never stop
149 #define DEFAULT_STOP_CONDITION CONDITION_FALSE
156 } ioctl_set_pids_to_ignore_t;
165 signed char reg; // -1 - memory, 0..127 - register number
167 } ioctl_usr_space_vtp_t;
174 } ioctl_usr_space_ip_t;
181 ioctl_usr_space_ip_t *p_ips;
183 ioctl_usr_space_vtp_t *p_vtps;
184 } ioctl_usr_space_lib_t;
191 ioctl_usr_space_lib_t *p_libs;
192 } ioctl_inst_usr_space_proc_t;
198 } ioctl_set_proc_to_ignore_t;
206 // exclude entry events
207 #define IOCTL_EMASK_ENTRY 0x01
208 // exclude exit events
209 #define IOCTL_EMASK_EXIT 0x02
211 #define IOCTL_EMASK_TIME 0x04
213 #define IOCTL_EMASK_PID 0x08
215 #define IOCTL_EMASK_TID 0x10
217 #define IOCTL_EMASK_CPU 0x20
219 #define IOCTL_EMASK_ARGS 0x40
223 unsigned probes_count;
225 } ioctl_predef_uprobes_info_t;
228 #endif /* !defined(ec_ioctl_h) */