-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
yaml --- r: 165327 b: refs/heads/master c: 2b022e3 h: refs/heads/master i: 165325: 3f5de51 165323: 802231e 165319: ae9f915 165311: 008cc6d v: v3
- Loading branch information
Xiao Guangrong
authored and
Thomas Gleixner
committed
Aug 29, 2009
1 parent
22bbc0a
commit 199b99f
Showing
3 changed files
with
166 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
--- | ||
refs/heads/master: f71bb0ac5e85410601b0db29d7b1635345ea61a4 | ||
refs/heads/master: 2b022e3d4bf9885f781221c59d86283a2cdfc2ed |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,137 @@ | ||
#undef TRACE_SYSTEM | ||
#define TRACE_SYSTEM timer | ||
|
||
#if !defined(_TRACE_TIMER_H) || defined(TRACE_HEADER_MULTI_READ) | ||
#define _TRACE_TIMER_H | ||
|
||
#include <linux/tracepoint.h> | ||
#include <linux/timer.h> | ||
|
||
/** | ||
* timer_init - called when the timer is initialized | ||
* @timer: pointer to struct timer_list | ||
*/ | ||
TRACE_EVENT(timer_init, | ||
|
||
TP_PROTO(struct timer_list *timer), | ||
|
||
TP_ARGS(timer), | ||
|
||
TP_STRUCT__entry( | ||
__field( void *, timer ) | ||
), | ||
|
||
TP_fast_assign( | ||
__entry->timer = timer; | ||
), | ||
|
||
TP_printk("timer %p", __entry->timer) | ||
); | ||
|
||
/** | ||
* timer_start - called when the timer is started | ||
* @timer: pointer to struct timer_list | ||
* @expires: the timers expiry time | ||
*/ | ||
TRACE_EVENT(timer_start, | ||
|
||
TP_PROTO(struct timer_list *timer, unsigned long expires), | ||
|
||
TP_ARGS(timer, expires), | ||
|
||
TP_STRUCT__entry( | ||
__field( void *, timer ) | ||
__field( void *, function ) | ||
__field( unsigned long, expires ) | ||
__field( unsigned long, now ) | ||
), | ||
|
||
TP_fast_assign( | ||
__entry->timer = timer; | ||
__entry->function = timer->function; | ||
__entry->expires = expires; | ||
__entry->now = jiffies; | ||
), | ||
|
||
TP_printk("timer %p: func %pf, expires %lu, timeout %ld", | ||
__entry->timer, __entry->function, __entry->expires, | ||
(long)__entry->expires - __entry->now) | ||
); | ||
|
||
/** | ||
* timer_expire_entry - called immediately before the timer callback | ||
* @timer: pointer to struct timer_list | ||
* | ||
* Allows to determine the timer latency. | ||
*/ | ||
TRACE_EVENT(timer_expire_entry, | ||
|
||
TP_PROTO(struct timer_list *timer), | ||
|
||
TP_ARGS(timer), | ||
|
||
TP_STRUCT__entry( | ||
__field( void *, timer ) | ||
__field( unsigned long, now ) | ||
), | ||
|
||
TP_fast_assign( | ||
__entry->timer = timer; | ||
__entry->now = jiffies; | ||
), | ||
|
||
TP_printk("timer %p: now %lu", __entry->timer, __entry->now) | ||
); | ||
|
||
/** | ||
* timer_expire_exit - called immediately after the timer callback returns | ||
* @timer: pointer to struct timer_list | ||
* | ||
* When used in combination with the timer_expire_entry tracepoint we can | ||
* determine the runtime of the timer callback function. | ||
* | ||
* NOTE: Do NOT derefernce timer in TP_fast_assign. The pointer might | ||
* be invalid. We solely track the pointer. | ||
*/ | ||
TRACE_EVENT(timer_expire_exit, | ||
|
||
TP_PROTO(struct timer_list *timer), | ||
|
||
TP_ARGS(timer), | ||
|
||
TP_STRUCT__entry( | ||
__field(void *, timer ) | ||
), | ||
|
||
TP_fast_assign( | ||
__entry->timer = timer; | ||
), | ||
|
||
TP_printk("timer %p", __entry->timer) | ||
); | ||
|
||
/** | ||
* timer_cancel - called when the timer is canceled | ||
* @timer: pointer to struct timer_list | ||
*/ | ||
TRACE_EVENT(timer_cancel, | ||
|
||
TP_PROTO(struct timer_list *timer), | ||
|
||
TP_ARGS(timer), | ||
|
||
TP_STRUCT__entry( | ||
__field( void *, timer ) | ||
), | ||
|
||
TP_fast_assign( | ||
__entry->timer = timer; | ||
), | ||
|
||
TP_printk("timer %p", __entry->timer) | ||
); | ||
|
||
#endif /* _TRACE_TIMER_H */ | ||
|
||
/* This part must be outside protection */ | ||
#include <trace/define_trace.h> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters