X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=instrumentation%2Fevents%2Flttng-module%2Ftimer.h;h=f6369c04f492c92aa122f1cb95d07e528258d14c;hb=f3f909f4c73fa115c5bab66b2ba2caa7ad2d8bf2;hp=fa89f663abe4de13663f05feb6dc753f609a5e6d;hpb=e54456f5bc70a46e11d23e1e3b2ae70bcda4c49f;p=lttng-modules.git diff --git a/instrumentation/events/lttng-module/timer.h b/instrumentation/events/lttng-module/timer.h index fa89f663..f6369c04 100644 --- a/instrumentation/events/lttng-module/timer.h +++ b/instrumentation/events/lttng-module/timer.h @@ -1,18 +1,22 @@ #undef TRACE_SYSTEM #define TRACE_SYSTEM timer -#if !defined(_TRACE_TIMER_H) || defined(TRACE_HEADER_MULTI_READ) -#define _TRACE_TIMER_H +#if !defined(LTTNG_TRACE_TIMER_H) || defined(TRACE_HEADER_MULTI_READ) +#define LTTNG_TRACE_TIMER_H -#include +#include "../../../probes/lttng-tracepoint-event.h" #ifndef _TRACE_TIMER_DEF_ #define _TRACE_TIMER_DEF_ #include #include +#include + +struct timer_list; + #endif /* _TRACE_TIMER_DEF_ */ -DECLARE_EVENT_CLASS(timer_class, +LTTNG_TRACEPOINT_EVENT_CLASS(timer_class, TP_PROTO(struct timer_list *timer), @@ -33,19 +37,52 @@ DECLARE_EVENT_CLASS(timer_class, * timer_init - called when the timer is initialized * @timer: pointer to struct timer_list */ -DEFINE_EVENT(timer_class, timer_init, +LTTNG_TRACEPOINT_EVENT_INSTANCE(timer_class, timer_init, TP_PROTO(struct timer_list *timer), TP_ARGS(timer) ) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,2,0)) +/** + * timer_start - called when the timer is started + * @timer: pointer to struct timer_list + * @expires: the timers expiry time + * @flags: the timers expiry time + */ +LTTNG_TRACEPOINT_EVENT(timer_start, + + TP_PROTO(struct timer_list *timer, unsigned long expires, + unsigned int flags), + + TP_ARGS(timer, expires, flags), + + TP_STRUCT__entry( + __field( void *, timer ) + __field( void *, function ) + __field( unsigned long, expires ) + __field( unsigned long, now ) + __field( unsigned int, flags ) + ), + + TP_fast_assign( + tp_assign(timer, timer) + tp_assign(function, timer->function) + tp_assign(expires, expires) + tp_assign(now, jiffies) + tp_assign(flags, flags) + ), + + TP_printk() +) +#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,2,0)) */ /** * timer_start - called when the timer is started * @timer: pointer to struct timer_list * @expires: the timers expiry time */ -TRACE_EVENT(timer_start, +LTTNG_TRACEPOINT_EVENT(timer_start, TP_PROTO(struct timer_list *timer, unsigned long expires), @@ -69,6 +106,7 @@ TRACE_EVENT(timer_start, __entry->timer, __entry->function, __entry->expires, (long)__entry->expires - __entry->now) ) +#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,2,0)) */ /** * timer_expire_entry - called immediately before the timer callback @@ -76,7 +114,7 @@ TRACE_EVENT(timer_start, * * Allows to determine the timer latency. */ -TRACE_EVENT(timer_expire_entry, +LTTNG_TRACEPOINT_EVENT(timer_expire_entry, TP_PROTO(struct timer_list *timer), @@ -107,7 +145,7 @@ TRACE_EVENT(timer_expire_entry, * NOTE: Do NOT derefernce timer in TP_fast_assign. The pointer might * be invalid. We solely track the pointer. */ -DEFINE_EVENT(timer_class, timer_expire_exit, +LTTNG_TRACEPOINT_EVENT_INSTANCE(timer_class, timer_expire_exit, TP_PROTO(struct timer_list *timer), @@ -118,7 +156,7 @@ DEFINE_EVENT(timer_class, timer_expire_exit, * timer_cancel - called when the timer is canceled * @timer: pointer to struct timer_list */ -DEFINE_EVENT(timer_class, timer_cancel, +LTTNG_TRACEPOINT_EVENT_INSTANCE(timer_class, timer_cancel, TP_PROTO(struct timer_list *timer), @@ -131,7 +169,7 @@ DEFINE_EVENT(timer_class, timer_cancel, * @clockid: the hrtimers clock * @mode: the hrtimers mode */ -TRACE_EVENT(hrtimer_init, +LTTNG_TRACEPOINT_EVENT(hrtimer_init, TP_PROTO(struct hrtimer *hrtimer, clockid_t clockid, enum hrtimer_mode mode), @@ -161,7 +199,7 @@ TRACE_EVENT(hrtimer_init, * hrtimer_start - called when the hrtimer is started * @timer: pointer to struct hrtimer */ -TRACE_EVENT(hrtimer_start, +LTTNG_TRACEPOINT_EVENT(hrtimer_start, TP_PROTO(struct hrtimer *hrtimer), @@ -197,7 +235,7 @@ TRACE_EVENT(hrtimer_start, * * Allows to determine the timer latency. */ -TRACE_EVENT(hrtimer_expire_entry, +LTTNG_TRACEPOINT_EVENT(hrtimer_expire_entry, TP_PROTO(struct hrtimer *hrtimer, ktime_t *now), @@ -219,7 +257,7 @@ TRACE_EVENT(hrtimer_expire_entry, (unsigned long long)ktime_to_ns((ktime_t) { .tv64 = __entry->now })) ) -DECLARE_EVENT_CLASS(hrtimer_class, +LTTNG_TRACEPOINT_EVENT_CLASS(hrtimer_class, TP_PROTO(struct hrtimer *hrtimer), @@ -243,7 +281,7 @@ DECLARE_EVENT_CLASS(hrtimer_class, * When used in combination with the hrtimer_expire_entry tracepoint we can * determine the runtime of the callback function. */ -DEFINE_EVENT(hrtimer_class, hrtimer_expire_exit, +LTTNG_TRACEPOINT_EVENT_INSTANCE(hrtimer_class, hrtimer_expire_exit, TP_PROTO(struct hrtimer *hrtimer), @@ -254,7 +292,7 @@ DEFINE_EVENT(hrtimer_class, hrtimer_expire_exit, * hrtimer_cancel - called when the hrtimer is canceled * @hrtimer: pointer to struct hrtimer */ -DEFINE_EVENT(hrtimer_class, hrtimer_cancel, +LTTNG_TRACEPOINT_EVENT_INSTANCE(hrtimer_class, hrtimer_cancel, TP_PROTO(struct hrtimer *hrtimer), @@ -268,7 +306,7 @@ DEFINE_EVENT(hrtimer_class, hrtimer_cancel, * zero, otherwise it is started * @expires: the itimers expiry time */ -TRACE_EVENT(itimer_state, +LTTNG_TRACEPOINT_EVENT(itimer_state, TP_PROTO(int which, const struct itimerval *const value, cputime_t expires), @@ -305,7 +343,7 @@ TRACE_EVENT(itimer_state, * @pid: pid of the process which owns the timer * @now: current time, used to calculate the latency of itimer */ -TRACE_EVENT(itimer_expire, +LTTNG_TRACEPOINT_EVENT(itimer_expire, TP_PROTO(int which, struct pid *pid, cputime_t now), @@ -327,7 +365,7 @@ TRACE_EVENT(itimer_expire, (int) __entry->pid, (unsigned long long)__entry->now) ) -#endif /* _TRACE_TIMER_H */ +#endif /* LTTNG_TRACE_TIMER_H */ /* This part must be outside protection */ #include "../../../probes/define_trace.h"