00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef _RTAI_TRACE_H
00022 #define _RTAI_TRACE_H
00023
00024 #include <rtai_types.h>
00025
00026 #if defined(CONFIG_RTAI_TRACE) && defined(__KERNEL__)
00027
00028 #include <linux/trace.h>
00029
00030
00031
00032
00033 int rt_register_tracer
00034 (tracer_call );
00035 int rt_unregister_tracer
00036 (tracer_call );
00037 int rt_trace_event
00038 (uint8_t ,
00039 void* );
00040
00041
00042 #define RT_TRACE_EVENT(ID, DATA) rt_trace_event(ID, DATA)
00043
00044 #define TRACE_RTAI_START TRACE_EV_MAX
00045
00046
00047 #define TRACE_RTAI_EV_MOUNT TRACE_RTAI_START + 1
00048 #define TRACE_RTAI_EV_UMOUNT TRACE_RTAI_START + 2
00049 #define TRACE_RTAI_EV_GLOBAL_IRQ_ENTRY TRACE_RTAI_START + 3
00050 #define TRACE_RTAI_EV_GLOBAL_IRQ_EXIT TRACE_RTAI_START + 4
00051 #define TRACE_RTAI_EV_OWN_IRQ_ENTRY TRACE_RTAI_START + 5
00052 #define TRACE_RTAI_EV_OWN_IRQ_EXIT TRACE_RTAI_START + 6
00053 #define TRACE_RTAI_EV_TRAP_ENTRY TRACE_RTAI_START + 7
00054 #define TRACE_RTAI_EV_TRAP_EXIT TRACE_RTAI_START + 8
00055 #define TRACE_RTAI_EV_SRQ_ENTRY TRACE_RTAI_START + 9
00056 #define TRACE_RTAI_EV_SRQ_EXIT TRACE_RTAI_START + 10
00057 #define TRACE_RTAI_EV_SWITCHTO_LINUX TRACE_RTAI_START + 11
00058 #define TRACE_RTAI_EV_SWITCHTO_RT TRACE_RTAI_START + 12
00059 #define TRACE_RTAI_EV_SCHED_CHANGE TRACE_RTAI_START + 13
00060 #define TRACE_RTAI_EV_TASK TRACE_RTAI_START + 14
00061 #define TRACE_RTAI_EV_TIMER TRACE_RTAI_START + 15
00062 #define TRACE_RTAI_EV_SEM TRACE_RTAI_START + 16
00063 #define TRACE_RTAI_EV_MSG TRACE_RTAI_START + 17
00064 #define TRACE_RTAI_EV_RPC TRACE_RTAI_START + 18
00065 #define TRACE_RTAI_EV_MBX TRACE_RTAI_START + 19
00066 #define TRACE_RTAI_EV_FIFO TRACE_RTAI_START + 20
00067 #define TRACE_RTAI_EV_SHM TRACE_RTAI_START + 21
00068 #define TRACE_RTAI_EV_POSIX TRACE_RTAI_START + 22
00069 #define TRACE_RTAI_EV_LXRT TRACE_RTAI_START + 23
00070 #define TRACE_RTAI_EV_LXRTI TRACE_RTAI_START + 24
00071
00072
00073 #define TRACE_RTAI_EV_MAX TRACE_RTAI_EV_LXRTI
00074
00075
00076
00077 #define TRACE_RTAI_MOUNT() rt_trace_event(TRACE_RTAI_EV_MOUNT, NULL)
00078
00079
00080 #define TRACE_RTAI_UMOUNT() rt_trace_event(TRACE_RTAI_EV_UMOUNT, NULL)
00081
00082
00083 typedef struct _trace_rtai_global_irq_entry
00084 {
00085 uint8_t irq_id;
00086 uint8_t kernel;
00087 } LTT_PACKED_STRUCT trace_rtai_global_irq_entry;
00088 #if CONFIG_X86
00089 #define TRACE_RTAI_GLOBAL_IRQ_ENTRY(ID, __dummy) \
00090 do \
00091 {\
00092 uint32_t eflags, xcs; \
00093 trace_rtai_global_irq_entry irq_entry;\
00094 irq_entry.irq_id = ID;\
00095 __asm__ __volatile__("pushfl; pop %0": "=g" (eflags)); \
00096 __asm__ __volatile__("pushl %%cs; pop %0": "=g" (xcs)); \
00097 irq_entry.kernel = !((VM_MASK & eflags) || (3 & xcs));\
00098 rt_trace_event(TRACE_RTAI_EV_GLOBAL_IRQ_ENTRY, &irq_entry);\
00099 } while(0)
00100 #endif
00101 #if CONFIG_PPC
00102 #define TRACE_RTAI_GLOBAL_IRQ_ENTRY(ID, KERNEL) \
00103 do \
00104 {\
00105 trace_rtai_global_irq_entry irq_entry;\
00106 irq_entry.irq_id = ID;\
00107 irq_entry.kernel = KERNEL;\
00108 rt_trace_event(TRACE_RTAI_EV_GLOBAL_IRQ_ENTRY, &irq_entry);\
00109 } while(0)
00110 #endif
00111
00112
00113 #define TRACE_RTAI_GLOBAL_IRQ_EXIT() rt_trace_event(TRACE_RTAI_EV_GLOBAL_IRQ_EXIT, NULL)
00114
00115
00116 typedef struct _trace_rtai_own_irq_entry
00117 {
00118 uint8_t irq_id;
00119 uint8_t kernel;
00120 } LTT_PACKED_STRUCT trace_rtai_own_irq_entry;
00121 #if CONFIG_X86
00122 #define TRACE_RTAI_OWN_IRQ_ENTRY(ID) \
00123 do \
00124 {\
00125 uint32_t eflags, xcs; \
00126 trace_rtai_own_irq_entry irq_entry;\
00127 irq_entry.irq_id = ID;\
00128 __asm__ __volatile__("pushfl; pop %0": "=g" (eflags)); \
00129 __asm__ __volatile__("pushl %%cs; pop %0": "=g" (xcs)); \
00130 irq_entry.kernel = !((VM_MASK & eflags) || (3 & xcs));\
00131 rt_trace_event(TRACE_RTAI_EV_OWN_IRQ_ENTRY, &irq_entry);\
00132 } while(0)
00133 #endif
00134 #if CONFIG_PPC
00135 #define TRACE_RTAI_OWN_IRQ_ENTRY(ID, KERNEL) \
00136 do \
00137 {\
00138 trace_rtai_own_irq_entry irq_entry;\
00139 irq_entry.irq_id = ID;\
00140 irq_entry.kernel = KERNEL;\
00141 rt_trace_event(TRACE_RTAI_EV_OWN_IRQ_ENTRY, &irq_entry);\
00142 } while(0)
00143 #endif
00144
00145
00146 #define TRACE_RTAI_OWN_IRQ_EXIT() rt_trace_event(TRACE_RTAI_EV_OWN_IRQ_EXIT, NULL)
00147
00148
00149 typedef struct _trace_rtai_trap_entry
00150 {
00151 uint8_t trap_id;
00152 uint32_t address;
00153 } LTT_PACKED_STRUCT trace_rtai_trap_entry;
00154 #define TRACE_RTAI_TRAP_ENTRY(ID,ADDR) \
00155 do \
00156 {\
00157 trace_rtai_trap_entry trap_event;\
00158 trap_event.trap_id = ID;\
00159 trap_event.address = ADDR; \
00160 rt_trace_event(TRACE_RTAI_EV_TRAP_ENTRY, &trap_event);\
00161 } while(0)
00162
00163
00164
00165
00166
00167
00168
00169 #define TRACE_RTAI_TRAP_EXIT() rt_trace_event(TRACE_RTAI_EV_TRAP_EXIT, NULL)
00170
00171
00172 typedef struct _trace_rtai_srq_entry
00173 {
00174 uint8_t srq_id;
00175 uint8_t kernel;
00176 } LTT_PACKED_STRUCT trace_rtai_srq_entry;
00177 #if CONFIG_X86
00178 #define TRACE_RTAI_SRQ_ENTRY(ID) \
00179 do \
00180 {\
00181 uint32_t eflags, xcs; \
00182 trace_rtai_srq_entry srq_entry;\
00183 srq_entry.srq_id = ID;\
00184 __asm__ __volatile__("pushfl; pop %0": "=g" (eflags)); \
00185 __asm__ __volatile__("pushl %%cs; pop %0": "=g" (xcs)); \
00186 srq_entry.kernel = !((VM_MASK & eflags) || (3 & xcs));\
00187 rt_trace_event(TRACE_RTAI_EV_SRQ_ENTRY, &srq_entry);\
00188 } while(0)
00189 #endif
00190 #if CONFIG_PPC || CONFIG_ARM
00191 #define TRACE_RTAI_SRQ_ENTRY(ID,KERNEL) \
00192 do \
00193 {\
00194 trace_rtai_srq_entry srq_entry;\
00195 srq_entry.srq_id = ID;\
00196 srq_entry.kernel = KERNEL;\
00197 rt_trace_event(TRACE_RTAI_EV_SRQ_ENTRY, &srq_entry);\
00198 } while(0)
00199 #endif
00200
00201
00202 #define TRACE_RTAI_SRQ_EXIT() rt_trace_event(TRACE_RTAI_EV_SRQ_EXIT, NULL)
00203
00204
00205 typedef struct _trace_rtai_switchto_linux
00206 {
00207 uint8_t cpu_id;
00208 } LTT_PACKED_STRUCT trace_rtai_switchto_linux;
00209 #define TRACE_RTAI_SWITCHTO_LINUX(ID) \
00210 do \
00211 {\
00212 trace_rtai_switchto_linux switch_event; \
00213 switch_event.cpu_id = (uint8_t) ID; \
00214 rt_trace_event(TRACE_RTAI_EV_SWITCHTO_LINUX, &switch_event); \
00215 } while(0)
00216
00217
00218 typedef struct _trace_rtai_switchto_rt
00219 {
00220 uint8_t cpu_id;
00221 } LTT_PACKED_STRUCT trace_rtai_switchto_rt;
00222 #define TRACE_RTAI_SWITCHTO_RT(ID) \
00223 do \
00224 {\
00225 trace_rtai_switchto_rt switch_event; \
00226 switch_event.cpu_id = (uint8_t) ID; \
00227 rt_trace_event(TRACE_RTAI_EV_SWITCHTO_RT, &switch_event); \
00228 } while(0)
00229
00230
00231 typedef struct _trace_rtai_sched_change
00232 {
00233 uint32_t out;
00234 uint32_t in;
00235 uint32_t out_state;
00236 } LTT_PACKED_STRUCT trace_rtai_sched_change;
00237 #define TRACE_RTAI_SCHED_CHANGE(OUT, IN, OUT_STATE) \
00238 do \
00239 {\
00240 trace_rtai_sched_change sched_event;\
00241 sched_event.out = (uint32_t) OUT;\
00242 sched_event.in = (uint32_t) IN;\
00243 sched_event.out_state = (uint32_t) OUT_STATE; \
00244 rt_trace_event(TRACE_RTAI_EV_SCHED_CHANGE, &sched_event);\
00245 } while(0)
00246
00247
00248 #define TRACE_RTAI_EV_TASK_INIT 1
00249 #define TRACE_RTAI_EV_TASK_DELETE 2
00250 #define TRACE_RTAI_EV_TASK_SIG_HANDLER 3
00251 #define TRACE_RTAI_EV_TASK_YIELD 4
00252 #define TRACE_RTAI_EV_TASK_SUSPEND 5
00253 #define TRACE_RTAI_EV_TASK_RESUME 6
00254 #define TRACE_RTAI_EV_TASK_MAKE_PERIOD_RELATIVE 7
00255 #define TRACE_RTAI_EV_TASK_MAKE_PERIOD 8
00256 #define TRACE_RTAI_EV_TASK_WAIT_PERIOD 9
00257 #define TRACE_RTAI_EV_TASK_BUSY_SLEEP 10
00258 #define TRACE_RTAI_EV_TASK_SLEEP 11
00259 #define TRACE_RTAI_EV_TASK_SLEEP_UNTIL 12
00260 typedef struct _trace_rtai_task
00261 {
00262 uint8_t event_sub_id;
00263 uint32_t event_data1;
00264 uint64_t event_data2;
00265 uint64_t event_data3;
00266 } LTT_PACKED_STRUCT trace_rtai_task;
00267 #define TRACE_RTAI_TASK(ID, DATA1, DATA2, DATA3) \
00268 do \
00269 {\
00270 trace_rtai_task task_event;\
00271 task_event.event_sub_id = (uint8_t) ID;\
00272 task_event.event_data1 = (uint32_t) DATA1; \
00273 task_event.event_data2 = (uint64_t) DATA2; \
00274 task_event.event_data3 = (uint64_t) DATA3; \
00275 rt_trace_event(TRACE_RTAI_EV_TASK, &task_event);\
00276 } while(0)
00277
00278
00279 #define TRACE_RTAI_EV_TIMER_REQUEST 1
00280 #define TRACE_RTAI_EV_TIMER_FREE 2
00281 #define TRACE_RTAI_EV_TIMER_REQUEST_APIC 3
00282 #define TRACE_RTAI_EV_TIMER_APIC_FREE 4
00283 #define TRACE_RTAI_EV_TIMER_HANDLE_EXPIRY 5
00284 typedef struct _trace_rtai_timer
00285 {
00286 uint8_t event_sub_id;
00287 uint32_t event_data1;
00288 uint32_t event_data2;
00289 } LTT_PACKED_STRUCT trace_rtai_timer;
00290 #define TRACE_RTAI_TIMER(ID, DATA1, DATA2) \
00291 do \
00292 {\
00293 trace_rtai_timer timer_event; \
00294 timer_event.event_sub_id = (uint8_t) ID; \
00295 timer_event.event_data1 = (uint32_t) DATA1; \
00296 timer_event.event_data2 = (uint32_t) DATA2; \
00297 rt_trace_event(TRACE_RTAI_EV_TIMER, &timer_event); \
00298 } while(0)
00299
00300
00301 #define TRACE_RTAI_EV_SEM_INIT 1
00302 #define TRACE_RTAI_EV_SEM_DELETE 2
00303 #define TRACE_RTAI_EV_SEM_SIGNAL 3
00304 #define TRACE_RTAI_EV_SEM_WAIT 4
00305 #define TRACE_RTAI_EV_SEM_WAIT_IF 5
00306 #define TRACE_RTAI_EV_SEM_WAIT_UNTIL 6
00307 typedef struct _trace_rtai_sem
00308 {
00309 uint8_t event_sub_id;
00310 uint32_t event_data1;
00311 uint64_t event_data2;
00312 } LTT_PACKED_STRUCT trace_rtai_sem;
00313 #define TRACE_RTAI_SEM(ID, DATA1, DATA2) \
00314 do \
00315 {\
00316 trace_rtai_sem sem_event; \
00317 sem_event.event_sub_id = (uint8_t) ID; \
00318 sem_event.event_data1 = (uint32_t) DATA1; \
00319 sem_event.event_data2 = (uint64_t) DATA2; \
00320 rt_trace_event(TRACE_RTAI_EV_SEM, &sem_event); \
00321 } while(0)
00322
00323
00324 #define TRACE_RTAI_EV_MSG_SEND 1
00325 #define TRACE_RTAI_EV_MSG_SEND_IF 2
00326 #define TRACE_RTAI_EV_MSG_SEND_UNTIL 3
00327 #define TRACE_RTAI_EV_MSG_RECV 4
00328 #define TRACE_RTAI_EV_MSG_RECV_IF 5
00329 #define TRACE_RTAI_EV_MSG_RECV_UNTIL 6
00330 typedef struct _trace_rtai_msg
00331 {
00332 uint8_t event_sub_id;
00333 uint32_t event_data1;
00334 uint32_t event_data2;
00335 uint64_t event_data3;
00336 } LTT_PACKED_STRUCT trace_rtai_msg;
00337 #define TRACE_RTAI_MSG(ID, DATA1, DATA2, DATA3) \
00338 do \
00339 {\
00340 trace_rtai_msg msg_event; \
00341 msg_event.event_sub_id = (uint8_t) ID; \
00342 msg_event.event_data1 = (uint32_t) DATA1; \
00343 msg_event.event_data2 = (uint32_t) DATA2; \
00344 msg_event.event_data3 = (uint64_t) DATA3; \
00345 rt_trace_event(TRACE_RTAI_EV_MSG, &msg_event); \
00346 } while(0)
00347
00348
00349 #define TRACE_RTAI_EV_RPC_MAKE 1
00350 #define TRACE_RTAI_EV_RPC_MAKE_IF 2
00351 #define TRACE_RTAI_EV_RPC_MAKE_UNTIL 3
00352 #define TRACE_RTAI_EV_RPC_RETURN 4
00353 typedef struct _trace_rtai_rpc
00354 {
00355 uint8_t event_sub_id;
00356 uint32_t event_data1;
00357 uint32_t event_data2;
00358 uint64_t event_data3;
00359 } LTT_PACKED_STRUCT trace_rtai_rpc;
00360 #define TRACE_RTAI_RPC(ID, DATA1, DATA2, DATA3) \
00361 do \
00362 {\
00363 trace_rtai_rpc rpc_event; \
00364 rpc_event.event_sub_id = (uint8_t) ID; \
00365 rpc_event.event_data1 = (uint32_t) DATA1; \
00366 rpc_event.event_data2 = (uint32_t) DATA2; \
00367 rpc_event.event_data3 = (uint64_t) DATA3; \
00368 rt_trace_event(TRACE_RTAI_EV_RPC, &rpc_event); \
00369 } while(0)
00370
00371
00372 #define TRACE_RTAI_EV_MBX_INIT 1
00373 #define TRACE_RTAI_EV_MBX_DELETE 2
00374 #define TRACE_RTAI_EV_MBX_SEND 3
00375 #define TRACE_RTAI_EV_MBX_SEND_WP 4
00376 #define TRACE_RTAI_EV_MBX_SEND_IF 5
00377 #define TRACE_RTAI_EV_MBX_SEND_UNTIL 6
00378 #define TRACE_RTAI_EV_MBX_RECV 7
00379 #define TRACE_RTAI_EV_MBX_RECV_WP 8
00380 #define TRACE_RTAI_EV_MBX_RECV_IF 9
00381 #define TRACE_RTAI_EV_MBX_RECV_UNTIL 10
00382 typedef struct _trace_rtai_mbx
00383 {
00384 uint8_t event_sub_id;
00385 uint32_t event_data1;
00386 uint32_t event_data2;
00387 uint64_t event_data3;
00388 } LTT_PACKED_STRUCT trace_rtai_mbx;
00389 #define TRACE_RTAI_MBX(ID, DATA1, DATA2, DATA3) \
00390 do \
00391 {\
00392 trace_rtai_mbx mbx_event; \
00393 mbx_event.event_sub_id = (uint8_t) ID; \
00394 mbx_event.event_data1 = (uint32_t) DATA1; \
00395 mbx_event.event_data2 = (uint32_t) DATA2; \
00396 mbx_event.event_data3 = (uint64_t) DATA3; \
00397 rt_trace_event(TRACE_RTAI_EV_MBX, &mbx_event); \
00398 } while(0)
00399
00400
00401 #define TRACE_RTAI_EV_FIFO_CREATE 1
00402 #define TRACE_RTAI_EV_FIFO_DESTROY 2
00403 #define TRACE_RTAI_EV_FIFO_RESET 3
00404 #define TRACE_RTAI_EV_FIFO_RESIZE 4
00405 #define TRACE_RTAI_EV_FIFO_PUT 5
00406 #define TRACE_RTAI_EV_FIFO_GET 6
00407 #define TRACE_RTAI_EV_FIFO_CREATE_HANDLER 7
00408 #define TRACE_RTAI_EV_FIFO_OPEN 8
00409 #define TRACE_RTAI_EV_FIFO_RELEASE 9
00410 #define TRACE_RTAI_EV_FIFO_READ 10
00411 #define TRACE_RTAI_EV_FIFO_WRITE 11
00412 #define TRACE_RTAI_EV_FIFO_READ_TIMED 12
00413 #define TRACE_RTAI_EV_FIFO_WRITE_TIMED 13
00414 #define TRACE_RTAI_EV_FIFO_READ_ALLATONCE 14
00415 #define TRACE_RTAI_EV_FIFO_LLSEEK 15
00416 #define TRACE_RTAI_EV_FIFO_FASYNC 16
00417 #define TRACE_RTAI_EV_FIFO_IOCTL 17
00418 #define TRACE_RTAI_EV_FIFO_POLL 18
00419 #define TRACE_RTAI_EV_FIFO_SUSPEND_TIMED 19
00420 #define TRACE_RTAI_EV_FIFO_SET_ASYNC_SIG 20
00421 #define TRACE_RTAI_EV_FIFO_SEM_INIT 21
00422 #define TRACE_RTAI_EV_FIFO_SEM_POST 22
00423 #define TRACE_RTAI_EV_FIFO_SEM_WAIT 23
00424 #define TRACE_RTAI_EV_FIFO_SEM_TRY_WAIT 24
00425 #define TRACE_RTAI_EV_FIFO_SEM_TIMED_WAIT 25
00426 #define TRACE_RTAI_EV_FIFO_SEM_DESTROY 26
00427 typedef struct _trace_rtai_fifo
00428 {
00429 uint8_t event_sub_id;
00430 uint32_t event_data1;
00431 uint32_t event_data2;
00432 } LTT_PACKED_STRUCT trace_rtai_fifo;
00433 #define TRACE_RTAI_FIFO(ID, DATA1, DATA2) \
00434 do \
00435 {\
00436 trace_rtai_fifo fifo_event; \
00437 fifo_event.event_sub_id = (uint8_t) ID; \
00438 fifo_event.event_data1 = (uint32_t) DATA1; \
00439 fifo_event.event_data2 = (uint32_t) DATA2; \
00440 rt_trace_event(TRACE_RTAI_EV_FIFO, &fifo_event); \
00441 } while(0)
00442
00443
00444 #define TRACE_RTAI_EV_SHM_MALLOC 1
00445 #define TRACE_RTAI_EV_SHM_KMALLOC 2
00446 #define TRACE_RTAI_EV_SHM_GET_SIZE 3
00447 #define TRACE_RTAI_EV_SHM_FREE 4
00448 #define TRACE_RTAI_EV_SHM_KFREE 5
00449 typedef struct _trace_rtai_shm
00450 {
00451 uint8_t event_sub_id;
00452 uint32_t event_data1;
00453 uint32_t event_data2;
00454 uint32_t event_data3;
00455 } LTT_PACKED_STRUCT trace_rtai_shm;
00456 #define TRACE_RTAI_SHM(ID, DATA1, DATA2, DATA3) \
00457 do \
00458 {\
00459 trace_rtai_shm shm_event; \
00460 shm_event.event_sub_id = (uint8_t) ID; \
00461 shm_event.event_data1 = (uint32_t) DATA1; \
00462 shm_event.event_data2 = (uint32_t) DATA2; \
00463 shm_event.event_data3 = (uint32_t) DATA3; \
00464 rt_trace_event(TRACE_RTAI_EV_SHM, &shm_event); \
00465 } while(0)
00466
00467
00468 #define TRACE_RTAI_EV_POSIX_MQ_OPEN 1
00469 #define TRACE_RTAI_EV_POSIX_MQ_CLOSE 2
00470 #define TRACE_RTAI_EV_POSIX_MQ_SEND 3
00471 #define TRACE_RTAI_EV_POSIX_MQ_RECV 4
00472 #define TRACE_RTAI_EV_POSIX_MQ_GET_ATTR 5
00473 #define TRACE_RTAI_EV_POSIX_MQ_SET_ATTR 6
00474 #define TRACE_RTAI_EV_POSIX_MQ_NOTIFY 7
00475 #define TRACE_RTAI_EV_POSIX_MQ_UNLINK 8
00476 #define TRACE_RTAI_EV_POSIX_PTHREAD_CREATE 9
00477 #define TRACE_RTAI_EV_POSIX_PTHREAD_EXIT 10
00478 #define TRACE_RTAI_EV_POSIX_PTHREAD_SELF 11
00479 #define TRACE_RTAI_EV_POSIX_PTHREAD_ATTR_INIT 12
00480 #define TRACE_RTAI_EV_POSIX_PTHREAD_ATTR_DESTROY 13
00481 #define TRACE_RTAI_EV_POSIX_PTHREAD_ATTR_SETDETACHSTATE 14
00482 #define TRACE_RTAI_EV_POSIX_PTHREAD_ATTR_GETDETACHSTATE 15
00483 #define TRACE_RTAI_EV_POSIX_PTHREAD_ATTR_SETSCHEDPARAM 16
00484 #define TRACE_RTAI_EV_POSIX_PTHREAD_ATTR_GETSCHEDPARAM 17
00485 #define TRACE_RTAI_EV_POSIX_PTHREAD_ATTR_SETSCHEDPOLICY 18
00486 #define TRACE_RTAI_EV_POSIX_PTHREAD_ATTR_GETSCHEDPOLICY 19
00487 #define TRACE_RTAI_EV_POSIX_PTHREAD_ATTR_SETINHERITSCHED 20
00488 #define TRACE_RTAI_EV_POSIX_PTHREAD_ATTR_GETINHERITSCHED 21
00489 #define TRACE_RTAI_EV_POSIX_PTHREAD_ATTR_SETSCOPE 22
00490 #define TRACE_RTAI_EV_POSIX_PTHREAD_ATTR_GETSCOPE 23
00491 #define TRACE_RTAI_EV_POSIX_PTHREAD_SCHED_YIELD 24
00492 #define TRACE_RTAI_EV_POSIX_PTHREAD_CLOCK_GETTIME 25
00493 #define TRACE_RTAI_EV_POSIX_PTHREAD_MUTEX_INIT 26
00494 #define TRACE_RTAI_EV_POSIX_PTHREAD_MUTEX_DESTROY 27
00495 #define TRACE_RTAI_EV_POSIX_PTHREAD_MUTEXATTR_INIT 28
00496 #define TRACE_RTAI_EV_POSIX_PTHREAD_MUTEXATTR_DESTROY 29
00497 #define TRACE_RTAI_EV_POSIX_PTHREAD_MUTEXATTR_SETKIND_NP 30
00498 #define TRACE_RTAI_EV_POSIX_PTHREAD_MUTEXATTR_GETKIND_NP 31
00499 #define TRACE_RTAI_EV_POSIX_PTHREAD_SETSCHEDPARAM 32
00500 #define TRACE_RTAI_EV_POSIX_PTHREAD_GETSCHEDPARAM 33
00501 #define TRACE_RTAI_EV_POSIX_PTHREAD_MUTEX_TRY_LOCK 34
00502 #define TRACE_RTAI_EV_POSIX_PTHREAD_MUTEX_LOCK 35
00503 #define TRACE_RTAI_EV_POSIX_PTHREAD_MUTEX_UNLOCK 36
00504 #define TRACE_RTAI_EV_POSIX_PTHREAD_COND_INIT 37
00505 #define TRACE_RTAI_EV_POSIX_PTHREAD_COND_DESTROY 38
00506 #define TRACE_RTAI_EV_POSIX_PTHREAD_CONDATTR_INIT 39
00507 #define TRACE_RTAI_EV_POSIX_PTHREAD_CONDATTR_DESTROY 40
00508 #define TRACE_RTAI_EV_POSIX_PTHREAD_COND_WAIT 41
00509 #define TRACE_RTAI_EV_POSIX_PTHREAD_COND_TIMEDWAIT 42
00510 #define TRACE_RTAI_EV_POSIX_PTHREAD_COND_SIGNAL 43
00511 #define TRACE_RTAI_EV_POSIX_PTHREAD_COND_BROADCAST 44
00512 typedef struct _trace_rtai_posix
00513 {
00514 uint8_t event_sub_id;
00515 uint32_t event_data1;
00516 uint32_t event_data2;
00517 uint32_t event_data3;
00518 } LTT_PACKED_STRUCT trace_rtai_posix;
00519 #define TRACE_RTAI_POSIX(ID, DATA1, DATA2, DATA3) \
00520 do \
00521 {\
00522 trace_rtai_posix posix_event; \
00523 posix_event.event_sub_id = (uint8_t) ID; \
00524 posix_event.event_data1 = (uint32_t) DATA1; \
00525 posix_event.event_data2 = (uint32_t) DATA2; \
00526 posix_event.event_data3 = (uint32_t) DATA3; \
00527 rt_trace_event(TRACE_RTAI_EV_POSIX, &posix_event); \
00528 } while(0)
00529
00530
00531 #define TRACE_RTAI_EV_LXRT_RTAI_SYSCALL_ENTRY 1
00532 #define TRACE_RTAI_EV_LXRT_RTAI_SYSCALL_EXIT 2
00533 #define TRACE_RTAI_EV_LXCHANGE 3
00534 #define TRACE_RTAI_EV_LXRT_STEAL_TASK 4
00535 #define TRACE_RTAI_EV_LXRT_GIVE_BACK_TASK 5
00536 #define TRACE_RTAI_EV_LXRT_SUSPEND 6
00537 #define TRACE_RTAI_EV_LXRT_RESUME 7
00538 #define TRACE_RTAI_EV_LXRT_HANDLE 8
00539 typedef struct _trace_rtai_lxrt
00540 {
00541 uint8_t event_sub_id;
00542 uint32_t event_data1;
00543 uint32_t event_data2;
00544 uint32_t event_data3;
00545 } LTT_PACKED_STRUCT trace_rtai_lxrt;
00546 #define TRACE_RTAI_LXRT(ID, DATA1, DATA2, DATA3) \
00547 do \
00548 {\
00549 trace_rtai_lxrt lxrt_event; \
00550 lxrt_event.event_sub_id = (uint8_t) ID; \
00551 lxrt_event.event_data1 = (uint32_t) DATA1; \
00552 lxrt_event.event_data2 = (uint32_t) DATA2; \
00553 lxrt_event.event_data3 = (uint32_t) DATA3; \
00554 rt_trace_event(TRACE_RTAI_EV_LXRT, &lxrt_event); \
00555 } while(0)
00556
00557
00558 #define TRACE_RTAI_EV_LXRTI_NAME_ATTACH 1
00559 #define TRACE_RTAI_EV_LXRTI_NAME_LOCATE 2
00560 #define TRACE_RTAI_EV_LXRTI_NAME_DETACH 3
00561 #define TRACE_RTAI_EV_LXRTI_SEND 4
00562 #define TRACE_RTAI_EV_LXRTI_RECV 5
00563 #define TRACE_RTAI_EV_LXRTI_CRECV 6
00564 #define TRACE_RTAI_EV_LXRTI_REPLY 7
00565 #define TRACE_RTAI_EV_LXRTI_PROXY_ATTACH 8
00566 #define TRACE_RTAI_EV_LXRTI_PROXY_DETACH 9
00567 #define TRACE_RTAI_EV_LXRTI_TRIGGER 10
00568 typedef struct _trace_rtai_lxrti
00569 {
00570 uint8_t event_sub_id;
00571 uint32_t event_data1;
00572 uint32_t event_data2;
00573 uint64_t event_data3;
00574 } LTT_PACKED_STRUCT trace_rtai_lxrti;
00575 #define TRACE_RTAI_LXRTI(ID, DATA1, DATA2, DATA3) \
00576 do \
00577 {\
00578 trace_rtai_lxrti lxrti_event; \
00579 lxrti_event.event_sub_id = (uint8_t) ID; \
00580 lxrti_event.event_data1 = (uint32_t) DATA1; \
00581 lxrti_event.event_data2 = (uint32_t) DATA2; \
00582 lxrti_event.event_data3 = (uint64_t) DATA3; \
00583 rt_trace_event(TRACE_RTAI_EV_LXRTI, &lxrti_event); \
00584 } while(0)
00585
00586 #else
00587 #define RT_TRACE_EVENT(ID, DATA)
00588 #define TRACE_RTAI_MOUNT()
00589 #define TRACE_RTAI_UMOUNT()
00590 #define TRACE_RTAI_GLOBAL_IRQ_ENTRY(ID,X)
00591 #define TRACE_RTAI_GLOBAL_IRQ_EXIT()
00592 #define TRACE_RTAI_OWN_IRQ_ENTRY(ID)
00593 #define TRACE_RTAI_OWN_IRQ_EXIT()
00594 #define TRACE_RTAI_TRAP_ENTRY(ID,ADDR)
00595 #define TRACE_RTAI_TRAP_EXIT()
00596 #if defined(CONFIG_PPC) && defined(CONFIG_ARM) && (CONFIG_PPC || CONFIG_ARM)
00597 #define TRACE_RTAI_SRQ_ENTRY(ID,KERNEL)
00598 #else
00599 #define TRACE_RTAI_SRQ_ENTRY(a)
00600 #endif
00601 #define TRACE_RTAI_SRQ_EXIT()
00602 #define TRACE_RTAI_SWITCHTO_LINUX(ID)
00603 #define TRACE_RTAI_SWITCHTO_RT(ID)
00604 #define TRACE_RTAI_SCHED_CHANGE(OUT, IN, OUT_STATE)
00605 #define TRACE_RTAI_TASK(ID, DATA1, DATA2, DATA3)
00606 #define TRACE_RTAI_TIMER(ID, DATA1, DATA2)
00607 #define TRACE_RTAI_SEM(ID, DATA1, DATA2)
00608 #define TRACE_RTAI_MSG(ID, DATA1, DATA2, DATA3)
00609 #define TRACE_RTAI_RPC(ID, DATA1, DATA2, DATA3)
00610 #define TRACE_RTAI_MBX(ID, DATA1, DATA2, DATA3)
00611 #define TRACE_RTAI_FIFO(ID, DATA1, DATA2)
00612 #define TRACE_RTAI_SHM(ID, DATA1, DATA2, DATA3)
00613 #define TRACE_RTAI_POSIX(ID, DATA1, DATA2, DATA3)
00614 #define TRACE_RTAI_LXRT(ID, DATA1, DATA2, DATA3)
00615 #define TRACE_RTAI_LXRTI(ID, DATA1, DATA2, DATA3)
00616 #endif
00617
00618 #endif