Compared to Jason's patch, this patch also instruments softirq raise event. Signed-off-by: Mathieu Desnoyers CC: 'Ingo Molnar' CC: Frederic Weisbecker CC: Jason Baron CC: 'Peter Zijlstra' CC: Thomas Gleixner CC: Russell King CC: Masami Hiramatsu CC: "Frank Ch. Eigler" CC: 'Hideo AOKI' CC: Takashi Nishiie CC: 'Steven Rostedt' CC: Eduard - Gabriel Munteanu --- include/trace/irq.h | 10 ++++++++++ kernel/softirq.c | 7 +++++++ 2 files changed, 17 insertions(+) Index: linux-2.6-lttng/include/trace/irq.h =================================================================== --- linux-2.6-lttng.orig/include/trace/irq.h 2009-03-24 11:48:36.000000000 -0400 +++ linux-2.6-lttng/include/trace/irq.h 2009-03-24 11:48:56.000000000 -0400 @@ -32,4 +32,14 @@ DECLARE_TRACE(irq_tasklet_high_exit, TPPROTO(struct tasklet_struct *t), TPARGS(t)); +DECLARE_TRACE(irq_softirq_entry, + TPPROTO(struct softirq_action *h, struct softirq_action *softirq_vec), + TPARGS(h, softirq_vec)); +DECLARE_TRACE(irq_softirq_exit, + TPPROTO(struct softirq_action *h, struct softirq_action *softirq_vec), + TPARGS(h, softirq_vec)); +DECLARE_TRACE(irq_softirq_raise, + TPPROTO(unsigned int nr), + TPARGS(nr)); + #endif Index: linux-2.6-lttng/kernel/softirq.c =================================================================== --- linux-2.6-lttng.orig/kernel/softirq.c 2009-03-24 11:48:36.000000000 -0400 +++ linux-2.6-lttng/kernel/softirq.c 2009-03-24 11:48:56.000000000 -0400 @@ -58,6 +58,10 @@ DEFINE_TRACE(irq_tasklet_high_exit); DEFINE_TRACE(irq_tasklet_low_entry); DEFINE_TRACE(irq_tasklet_low_exit); +DEFINE_TRACE(irq_softirq_entry); +DEFINE_TRACE(irq_softirq_exit); +DEFINE_TRACE(irq_softirq_raise); + /* * we cannot loop indefinitely here to avoid userspace starvation, * but we also don't want to introduce a worst case 1/HZ latency @@ -201,7 +205,9 @@ restart: if (pending & 1) { int prev_count = preempt_count(); + trace_irq_softirq_entry(h, softirq_vec); h->action(h); + trace_irq_softirq_exit(h, softirq_vec); if (unlikely(prev_count != preempt_count())) { printk(KERN_ERR "huh, entered softirq %td %p" @@ -300,6 +306,7 @@ void irq_exit(void) */ inline void raise_softirq_irqoff(unsigned int nr) { + trace_irq_softirq_raise(nr); __raise_softirq_irqoff(nr); /* -- Mathieu Desnoyers OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/