X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;ds=sidebyside;f=instrumentation%2Fevents%2Flttng-module%2Fsignal.h;h=a1c904bc8a27cac72df8d4ca64913c298eb536c2;hb=c1b29b59442b837791856e55f35164a891df76bd;hp=3fa7f5b1425a72678351fb1ef924498b8173ca07;hpb=0ec73ddce557ac36a2782a726ab5a00663c2e50d;p=lttng-modules.git diff --git a/instrumentation/events/lttng-module/signal.h b/instrumentation/events/lttng-module/signal.h index 3fa7f5b1..a1c904bc 100644 --- a/instrumentation/events/lttng-module/signal.h +++ b/instrumentation/events/lttng-module/signal.h @@ -5,11 +5,13 @@ #define _TRACE_SIGNAL_H #include +#include #ifndef _TRACE_SIGNAL_DEF #define _TRACE_SIGNAL_DEF #include #include +#undef TP_STORE_SIGINFO #define TP_STORE_SIGINFO(info) \ tp_assign(errno, \ (info == SEND_SIG_NOINFO || info == SEND_SIG_FORCED || info == SEND_SIG_PRIV) ? \ @@ -33,6 +35,7 @@ * SEND_SIG_NOINFO means that si_code is SI_USER, and SEND_SIG_PRIV * means that si_code is SI_KERNEL. */ +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,4,0)) TRACE_EVENT(signal_generate, TP_PROTO(int sig, struct siginfo *info, struct task_struct *task), @@ -43,7 +46,7 @@ TRACE_EVENT(signal_generate, __field( int, sig ) __field( int, errno ) __field( int, code ) - __array( char, comm, TASK_COMM_LEN ) + __array_text( char, comm, TASK_COMM_LEN ) __field( pid_t, pid ) ), @@ -58,6 +61,39 @@ TRACE_EVENT(signal_generate, __entry->sig, __entry->errno, __entry->code, __entry->comm, __entry->pid) ) +#else +TRACE_EVENT(signal_generate, + + TP_PROTO(int sig, struct siginfo *info, struct task_struct *task, + int group, int result), + + TP_ARGS(sig, info, task, group, result), + + TP_STRUCT__entry( + __field( int, sig ) + __field( int, errno ) + __field( int, code ) + __array_text( char, comm, TASK_COMM_LEN ) + __field( pid_t, pid ) + __field( int, group ) + __field( int, result ) + ), + + TP_fast_assign( + tp_assign(sig, sig) + TP_STORE_SIGINFO(info) + tp_memcpy(comm, task->comm, TASK_COMM_LEN) + tp_assign(pid, task->pid) + tp_assign(group, group) + tp_assign(result, result) + ), + + TP_printk("sig=%d errno=%d code=%d comm=%s pid=%d grp=%d res=%d", + __entry->sig, __entry->errno, __entry->code, + __entry->comm, __entry->pid, __entry->group, + __entry->result) +) +#endif /** * signal_deliver - called when a signal is delivered @@ -99,6 +135,7 @@ TRACE_EVENT(signal_deliver, __entry->sa_handler, __entry->sa_flags) ) +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,4,0)) DECLARE_EVENT_CLASS(signal_queue_overflow, TP_PROTO(int sig, int group, struct siginfo *info), @@ -157,6 +194,7 @@ DEFINE_EVENT(signal_queue_overflow, signal_lose_info, TP_ARGS(sig, group, info) ) +#endif #endif /* _TRACE_SIGNAL_H */