diff options
Diffstat (limited to 'test_plugin.c')
-rw-r--r-- | test_plugin.c | 31 |
1 files changed, 25 insertions, 6 deletions
diff --git a/test_plugin.c b/test_plugin.c index 26edbad..c7f3b8b 100644 --- a/test_plugin.c +++ b/test_plugin.c | |||
@@ -4,13 +4,28 @@ | |||
4 | 4 | ||
5 | #include "parse-events.h" | 5 | #include "parse-events.h" |
6 | 6 | ||
7 | static int handler(struct trace_seq *s, void *data, int size) | 7 | static int timer_expire_handler(struct trace_seq *s, void *data, int size) |
8 | { | 8 | { |
9 | void *hrtimer = data + 16; | ||
10 | long long now = *(long long *)(data + 24); | ||
9 | int ret; | 11 | int ret; |
10 | 12 | ||
11 | ret = trace_seq_printf(s, "COMM: %s state is %d next is %s", | 13 | ret = trace_seq_printf(s, "hrtimer=%p now=%llu", |
12 | (char *)(data+12), *(int *)(data + 40), | 14 | hrtimer, now); |
13 | (char *)(data+48)); | 15 | return ret; |
16 | } | ||
17 | |||
18 | static int timer_start_handler(struct trace_seq *s, void *data, int size) | ||
19 | { | ||
20 | void *hrtimer = data + 16; | ||
21 | void *function = data + 24; | ||
22 | long long expires = *(long long *)(data + 32); | ||
23 | long long soft = *(long long *)(data + 40); | ||
24 | int ret; | ||
25 | |||
26 | ret = trace_seq_printf(s, "hrtimer=%p function=%pf expires=%llu softexpires=%llu", | ||
27 | hrtimer, function, | ||
28 | expires, soft); | ||
14 | return ret; | 29 | return ret; |
15 | } | 30 | } |
16 | 31 | ||
@@ -18,7 +33,11 @@ int PEVENT_PLUGIN_LOADER(void) | |||
18 | { | 33 | { |
19 | printf("HELLO WORLD!!!\n"); | 34 | printf("HELLO WORLD!!!\n"); |
20 | 35 | ||
21 | pevent_register_event_handler(-1, "sched", "sched_switch", | 36 | pevent_register_event_handler(-1, "timer", "hrtimer_expire_entry", |
22 | handler); | 37 | timer_expire_handler); |
38 | |||
39 | pevent_register_event_handler(-1, "timer", "hrtimer_start", | ||
40 | timer_start_handler); | ||
41 | |||
23 | return 0; | 42 | return 0; |
24 | } | 43 | } |