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,
79 unsigned notification_count;
81 } ioctl_wait_notification_t;
86 unsigned int m_unsignedInt;
88 unsigned long m_unsignedLong;
94 OPERATION_ANY, // means do not check value
103 unsigned m_condition_always_false;
107 unsigned m_op_probe_id;
108 // char m_probe_name[SWAP_COMMON_STRING_SIZE];
109 unsigned m_op_record_type;
111 unsigned m_time_usec;
115 unsigned m_record_type;
120 // condition matching any event
121 #define CONDITION_ANY \
123 .m_condition_always_false = 0, \
124 .m_op_time = OPERATION_ANY, \
125 .m_op_pid = OPERATION_ANY, \
126 .m_op_tid = OPERATION_ANY, \
127 .m_op_probe_id = OPERATION_ANY, \
128 .m_op_record_type = OPERATION_ANY, \
131 // never matching condition
132 #define CONDITION_FALSE \
134 .m_condition_always_false = 1, \
135 .m_op_time = OPERATION_ANY, \
136 .m_op_pid = OPERATION_ANY, \
137 .m_op_tid = OPERATION_ANY, \
138 .m_op_probe_id = OPERATION_ANY, \
139 .m_op_record_type = OPERATION_ANY, \
142 // default start condition - start immediately
143 #define DEFAULT_START_CONDITION CONDITION_ANY
144 // default stop condition - never stop
145 #define DEFAULT_STOP_CONDITION CONDITION_FALSE
152 } ioctl_set_pids_to_ignore_t;
161 signed char reg; // -1 - memory, 0..127 - register number
163 } ioctl_usr_space_vtp_t;
170 } ioctl_usr_space_ip_t;
177 ioctl_usr_space_ip_t *p_ips;
179 ioctl_usr_space_vtp_t *p_vtps;
180 } ioctl_usr_space_lib_t;
187 ioctl_usr_space_lib_t *p_libs;
188 } ioctl_inst_usr_space_proc_t;
194 } ioctl_set_proc_to_ignore_t;
202 // exclude entry events
203 #define IOCTL_EMASK_ENTRY 0x01
204 // exclude exit events
205 #define IOCTL_EMASK_EXIT 0x02
207 #define IOCTL_EMASK_TIME 0x04
209 #define IOCTL_EMASK_PID 0x08
211 #define IOCTL_EMASK_TID 0x10
213 #define IOCTL_EMASK_CPU 0x20
215 #define IOCTL_EMASK_ARGS 0x40
219 unsigned probes_count;
221 } ioctl_predef_uprobes_info_t;
224 #endif /* !defined(ec_ioctl_h) */