itimers: Add tracepoints for itimer
Add tracepoints for all itimer variants: ITIMER_REAL, ITIMER_VIRTUAL and ITIMER_PROF. [ tglx: Fixed comments and made the output more readable, parseable and consistent. Replaced pid_vnr by pid_nr because the hrtimer callback can happen in any namespace ] Signed-off-by: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca> Cc: Anton Blanchard <anton@samba.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> Cc: Zhaolei <zhaolei@cn.fujitsu.com> LKML-Reference: <4A7F8B6E.2010109@cn.fujitsu.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
committed by
Thomas Gleixner
parent
c6a2a17702
commit
3f0a525ebf
@@ -270,6 +270,72 @@ TRACE_EVENT(hrtimer_cancel,
|
||||
TP_printk("hrtimer %p", __entry->timer)
|
||||
);
|
||||
|
||||
/**
|
||||
* itimer_state - called when itimer is started or canceled
|
||||
* @which: name of the interval timer
|
||||
* @value: the itimers value, itimer is canceled if value->it_value is
|
||||
* zero, otherwise it is started
|
||||
* @expires: the itimers expiry time
|
||||
*/
|
||||
TRACE_EVENT(itimer_state,
|
||||
|
||||
TP_PROTO(int which, const struct itimerval *const value,
|
||||
cputime_t expires),
|
||||
|
||||
TP_ARGS(which, value, expires),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field( int, which )
|
||||
__field( cputime_t, expires )
|
||||
__field( long, value_sec )
|
||||
__field( long, value_usec )
|
||||
__field( long, interval_sec )
|
||||
__field( long, interval_usec )
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__entry->which = which;
|
||||
__entry->expires = expires;
|
||||
__entry->value_sec = value->it_value.tv_sec;
|
||||
__entry->value_usec = value->it_value.tv_usec;
|
||||
__entry->interval_sec = value->it_interval.tv_sec;
|
||||
__entry->interval_usec = value->it_interval.tv_usec;
|
||||
),
|
||||
|
||||
TP_printk("which %d, expires %lu, it_value %lu.%lu, it_interval %lu.%lu",
|
||||
__entry->which, __entry->expires,
|
||||
__entry->value_sec, __entry->value_usec,
|
||||
__entry->interval_sec, __entry->interval_usec)
|
||||
);
|
||||
|
||||
/**
|
||||
* itimer_expire - called when itimer expires
|
||||
* @which: type of the interval timer
|
||||
* @pid: pid of the process which owns the timer
|
||||
* @now: current time, used to calculate the latency of itimer
|
||||
*/
|
||||
TRACE_EVENT(itimer_expire,
|
||||
|
||||
TP_PROTO(int which, struct pid *pid, cputime_t now),
|
||||
|
||||
TP_ARGS(which, pid, now),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field( int , which )
|
||||
__field( pid_t, pid )
|
||||
__field( cputime_t, now )
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__entry->which = which;
|
||||
__entry->now = now;
|
||||
__entry->pid = pid_nr(pid);
|
||||
),
|
||||
|
||||
TP_printk("which %d, pid %d, now %lu", __entry->which,
|
||||
(int) __entry->pid, __entry->now)
|
||||
);
|
||||
|
||||
#endif /* _TRACE_TIMER_H */
|
||||
|
||||
/* This part must be outside protection */
|
||||
|
Reference in New Issue
Block a user