xref: /linux/arch/x86/include/asm/trace/irq_vectors.h (revision ff5599816711d2e67da2d7561fd36ac48debd433)
1 #undef TRACE_SYSTEM
2 #define TRACE_SYSTEM irq_vectors
3 
4 #if !defined(_TRACE_IRQ_VECTORS_H) || defined(TRACE_HEADER_MULTI_READ)
5 #define _TRACE_IRQ_VECTORS_H
6 
7 #include <linux/tracepoint.h>
8 
9 extern void trace_irq_vector_regfunc(void);
10 extern void trace_irq_vector_unregfunc(void);
11 
12 DECLARE_EVENT_CLASS(x86_irq_vector,
13 
14 	TP_PROTO(int vector),
15 
16 	TP_ARGS(vector),
17 
18 	TP_STRUCT__entry(
19 		__field(		int,	vector	)
20 	),
21 
22 	TP_fast_assign(
23 		__entry->vector = vector;
24 	),
25 
26 	TP_printk("vector=%d", __entry->vector) );
27 
28 #define DEFINE_IRQ_VECTOR_EVENT(name)		\
29 DEFINE_EVENT_FN(x86_irq_vector, name##_entry,	\
30 	TP_PROTO(int vector),			\
31 	TP_ARGS(vector),			\
32 	trace_irq_vector_regfunc,		\
33 	trace_irq_vector_unregfunc);		\
34 DEFINE_EVENT_FN(x86_irq_vector, name##_exit,	\
35 	TP_PROTO(int vector),			\
36 	TP_ARGS(vector),			\
37 	trace_irq_vector_regfunc,		\
38 	trace_irq_vector_unregfunc);
39 
40 
41 /*
42  * local_timer - called when entering/exiting a local timer interrupt
43  * vector handler
44  */
45 DEFINE_IRQ_VECTOR_EVENT(local_timer);
46 
47 /*
48  * reschedule - called when entering/exiting a reschedule vector handler
49  */
50 DEFINE_IRQ_VECTOR_EVENT(reschedule);
51 
52 /*
53  * spurious_apic - called when entering/exiting a spurious apic vector handler
54  */
55 DEFINE_IRQ_VECTOR_EVENT(spurious_apic);
56 
57 /*
58  * error_apic - called when entering/exiting an error apic vector handler
59  */
60 DEFINE_IRQ_VECTOR_EVENT(error_apic);
61 
62 /*
63  * x86_platform_ipi - called when entering/exiting a x86 platform ipi interrupt
64  * vector handler
65  */
66 DEFINE_IRQ_VECTOR_EVENT(x86_platform_ipi);
67 
68 /*
69  * irq_work - called when entering/exiting a irq work interrupt
70  * vector handler
71  */
72 DEFINE_IRQ_VECTOR_EVENT(irq_work);
73 
74 /*
75  * call_function - called when entering/exiting a call function interrupt
76  * vector handler
77  */
78 DEFINE_IRQ_VECTOR_EVENT(call_function);
79 
80 /*
81  * call_function_single - called when entering/exiting a call function
82  * single interrupt vector handler
83  */
84 DEFINE_IRQ_VECTOR_EVENT(call_function_single);
85 
86 /*
87  * threshold_apic - called when entering/exiting a threshold apic interrupt
88  * vector handler
89  */
90 DEFINE_IRQ_VECTOR_EVENT(threshold_apic);
91 
92 /*
93  * thermal_apic - called when entering/exiting a thermal apic interrupt
94  * vector handler
95  */
96 DEFINE_IRQ_VECTOR_EVENT(thermal_apic);
97 
98 #undef TRACE_INCLUDE_PATH
99 #define TRACE_INCLUDE_PATH .
100 #define TRACE_INCLUDE_FILE irq_vectors
101 #endif /*  _TRACE_IRQ_VECTORS_H */
102 
103 /* This part must be outside protection */
104 #include <trace/define_trace.h>
105