diff options
author | Jason Baron <jbaron@redhat.com> | 2009-02-26 10:11:05 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-02-26 12:43:50 -0500 |
commit | af39241b90a345556b8884adff87096afe71b050 (patch) | |
tree | a913e3f15b1fb91555b5cb5899270274ce4c2c46 /include | |
parent | 8656e7a2fa6afcd8682990f804a2a9674568738f (diff) |
tracing, genirq: add irq enter and exit trace events
Impact: add new tracepoints
Add them to the generic IRQ code, that way every architecture
gets these new tracepoints, not just x86.
Using Steve's new 'TRACE_FORMAT', I can get function graph
trace as follows using the original two IRQ tracepoints:
3) | handle_IRQ_event() {
3) | /* (irq_handler_entry) irq=28 handler=eth0 */
3) | e1000_intr_msi() {
3) 2.460 us | __napi_schedule();
3) 9.416 us | }
3) | /* (irq_handler_exit) irq=28 handler=eth0 return=handled */
3) + 22.935 us | }
Signed-off-by: Jason Baron <jbaron@redhat.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Acked-by: Peter Zijlstra <peterz@infradead.org>
Acked-by: Masami Hiramatsu <mhiramat@redhat.com>
Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Cc: Mathieu Desnoyers <compudj@krystal.dyndns.org>
Cc: "Frank Ch. Eigler" <fche@redhat.com>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'include')
-rw-r--r-- | include/trace/irq.h | 9 | ||||
-rw-r--r-- | include/trace/irq_event_types.h | 17 |
2 files changed, 26 insertions, 0 deletions
diff --git a/include/trace/irq.h b/include/trace/irq.h new file mode 100644 index 000000000000..ff5d4495dc37 --- /dev/null +++ b/include/trace/irq.h | |||
@@ -0,0 +1,9 @@ | |||
1 | #ifndef _TRACE_IRQ_H | ||
2 | #define _TRACE_IRQ_H | ||
3 | |||
4 | #include <linux/interrupt.h> | ||
5 | #include <linux/tracepoint.h> | ||
6 | |||
7 | #include <trace/irq_event_types.h> | ||
8 | |||
9 | #endif | ||
diff --git a/include/trace/irq_event_types.h b/include/trace/irq_event_types.h new file mode 100644 index 000000000000..5d0919fdd2d4 --- /dev/null +++ b/include/trace/irq_event_types.h | |||
@@ -0,0 +1,17 @@ | |||
1 | |||
2 | /* use <trace/irq.h> instead */ | ||
3 | #ifndef TRACE_FORMAT | ||
4 | # error Do not include this file directly. | ||
5 | # error Unless you know what you are doing. | ||
6 | #endif | ||
7 | |||
8 | TRACE_FORMAT(irq_handler_entry, | ||
9 | TPPROTO(int irq, struct irqaction *action), | ||
10 | TPARGS(irq, action), | ||
11 | TPFMT("irq=%d handler=%s", irq, action->name)); | ||
12 | |||
13 | TRACE_FORMAT(irq_handler_exit, | ||
14 | TPPROTO(int irq, struct irqaction *action, int ret), | ||
15 | TPARGS(irq, action, ret), | ||
16 | TPFMT("irq=%d handler=%s return=%s", | ||
17 | irq, action->name, ret ? "handled" : "unhandled")); | ||