diff options
author | Daniel Lezcano <daniel.lezcano@linaro.org> | 2017-04-07 17:32:35 +0200 |
---|---|---|
committer | Daniel Lezcano <daniel.lezcano@linaro.org> | 2017-05-16 10:48:45 +0200 |
commit | 979a7b878fefea6bb67fa4e3a53eef12e99ddb41 (patch) | |
tree | 82199dc60f01012ec105af8fc69b80dc79d0d32c | |
parent | 13c31116249fead9aee50aa7dfda82e655f183cf (diff) |
trace: irq: Add next event trace
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
-rw-r--r-- | include/trace/events/irq.h | 29 | ||||
-rw-r--r-- | kernel/irq/timings.c | 3 |
2 files changed, 32 insertions, 0 deletions
diff --git a/include/trace/events/irq.h b/include/trace/events/irq.h index 1c41b74581f7..dc3c6f22fcb9 100644 --- a/include/trace/events/irq.h +++ b/include/trace/events/irq.h @@ -99,6 +99,35 @@ TRACE_EVENT(irq_handler_exit, __entry->irq, __entry->ret ? "handled" : "unhandled") ); +#ifdef CONFIG_IRQ_TIMINGS +/** + * irq_timings_next_event - called when the next irq event is computed + * @irq: the irq number + * @ne: next event timeline in nanosec unit based + * + * If there is no event predicted at the moment this function is called, + * the next event is U64_MAX. + */ +TRACE_EVENT(irq_timings_next_event, + + TP_PROTO(int irq, u64 ne), + + TP_ARGS(irq, ne), + + TP_STRUCT__entry( + __field( int, irq ) + __field( u64, ne ) + ), + + TP_fast_assign( + __entry->irq = irq; + __entry->ne = ne; + ), + + TP_printk("irq=%d next_event=%llu", __entry->irq, __entry->ne) +); +#endif + DECLARE_EVENT_CLASS(softirq, TP_PROTO(unsigned int vec_nr), diff --git a/kernel/irq/timings.c b/kernel/irq/timings.c index 2dba2e745302..d50736473600 100644 --- a/kernel/irq/timings.c +++ b/kernel/irq/timings.c @@ -363,6 +363,9 @@ u64 irq_timings_next_event(u64 now) } } + if (irq) + trace_irq_timings_next_event(irq, ne); + return ne; } |