blob: 768686467518533b08223ca20f61ecbd7c6d1522 [file] [log] [blame]
Steven Rostedtea20d922009-04-10 08:54:16 -04001#if !defined(_TRACE_IRQ_H) || defined(TRACE_HEADER_MULTI_READ)
Jason Baronaf392412009-02-26 10:11:05 -05002#define _TRACE_IRQ_H
3
Jason Baronaf392412009-02-26 10:11:05 -05004#include <linux/tracepoint.h>
Steven Rostedtea20d922009-04-10 08:54:16 -04005#include <linux/interrupt.h>
Jason Baronaf392412009-02-26 10:11:05 -05006
Steven Rostedtea20d922009-04-10 08:54:16 -04007#undef TRACE_SYSTEM
8#define TRACE_SYSTEM irq
9
10/*
11 * Tracepoint for entry of interrupt handler:
12 */
Steven Rostedt160031b2009-04-24 11:26:55 -040013TRACE_EVENT(irq_handler_entry,
14
Steven Rostedtea20d922009-04-10 08:54:16 -040015 TP_PROTO(int irq, struct irqaction *action),
Steven Rostedt160031b2009-04-24 11:26:55 -040016
Steven Rostedtea20d922009-04-10 08:54:16 -040017 TP_ARGS(irq, action),
Steven Rostedt160031b2009-04-24 11:26:55 -040018
19 TP_STRUCT__entry(
20 __field( int, irq )
21 __string( name, action->name )
22 ),
23
24 TP_fast_assign(
25 __entry->irq = irq;
26 __assign_str(name, action->name);
27 ),
28
29 TP_printk("irq=%d handler=%s", __entry->irq, __get_str(name))
30);
Steven Rostedtea20d922009-04-10 08:54:16 -040031
32/*
33 * Tracepoint for return of an interrupt handler:
34 */
35TRACE_EVENT(irq_handler_exit,
36
37 TP_PROTO(int irq, struct irqaction *action, int ret),
38
39 TP_ARGS(irq, action, ret),
40
41 TP_STRUCT__entry(
42 __field( int, irq )
43 __field( int, ret )
44 ),
45
46 TP_fast_assign(
47 __entry->irq = irq;
48 __entry->ret = ret;
49 ),
50
51 TP_printk("irq=%d return=%s",
52 __entry->irq, __entry->ret ? "handled" : "unhandled")
53);
54
Steven Rostedt160031b2009-04-24 11:26:55 -040055TRACE_EVENT(softirq_entry,
Steven Rostedtea20d922009-04-10 08:54:16 -040056
Steven Rostedtea20d922009-04-10 08:54:16 -040057 TP_PROTO(struct softirq_action *h, struct softirq_action *vec),
Steven Rostedt160031b2009-04-24 11:26:55 -040058
Steven Rostedtea20d922009-04-10 08:54:16 -040059 TP_ARGS(h, vec),
Steven Rostedt160031b2009-04-24 11:26:55 -040060
61 TP_STRUCT__entry(
62 __field( int, vec )
63 __string( name, softirq_to_name[h-vec] )
64 ),
65
66 TP_fast_assign(
67 __entry->vec = (int)(h - vec);
68 __assign_str(name, softirq_to_name[h-vec]);
69 ),
70
71 TP_printk("softirq=%d action=%s", __entry->vec, __get_str(name))
72);
73
74TRACE_EVENT(softirq_exit,
75
76 TP_PROTO(struct softirq_action *h, struct softirq_action *vec),
77
78 TP_ARGS(h, vec),
79
80 TP_STRUCT__entry(
81 __field( int, vec )
82 __string( name, softirq_to_name[h-vec] )
83 ),
84
85 TP_fast_assign(
86 __entry->vec = (int)(h - vec);
87 __assign_str(name, softirq_to_name[h-vec]);
88 ),
89
90 TP_printk("softirq=%d action=%s", __entry->vec, __get_str(name))
91);
Jason Baronaf392412009-02-26 10:11:05 -050092
Steven Rostedta8d154b2009-04-10 09:36:00 -040093#endif /* _TRACE_IRQ_H */
94
95/* This part must be outside protection */
96#include <trace/define_trace.h>