Drop support for kernels < 3.0 from irq instrumentation
[lttng-modules.git] / instrumentation / events / lttng-module / irq.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #undef TRACE_SYSTEM
3 #define TRACE_SYSTEM irq
4
5 #if !defined(LTTNG_TRACE_IRQ_H) || defined(TRACE_HEADER_MULTI_READ)
6 #define LTTNG_TRACE_IRQ_H
7
8 #include <probes/lttng-tracepoint-event.h>
9
10 #ifndef _TRACE_IRQ_DEF_
11 #define _TRACE_IRQ_DEF_
12
13 struct irqaction;
14 struct softirq_action;
15
16 #endif /* _TRACE_IRQ_DEF_ */
17
18 /**
19 * irq_handler_entry - called immediately before the irq action handler
20 * @irq: irq number
21 * @action: pointer to struct irqaction
22 *
23 * The struct irqaction pointed to by @action contains various
24 * information about the handler, including the device name,
25 * @action->name, and the device id, @action->dev_id. When used in
26 * conjunction with the irq_handler_exit tracepoint, we can figure
27 * out irq handler latencies.
28 */
29 LTTNG_TRACEPOINT_EVENT(irq_handler_entry,
30
31 TP_PROTO(int irq, struct irqaction *action),
32
33 TP_ARGS(irq, action),
34
35 TP_FIELDS(
36 ctf_integer(int, irq, irq)
37 ctf_string(name, action->name)
38 )
39 )
40
41 /**
42 * irq_handler_exit - called immediately after the irq action handler returns
43 * @irq: irq number
44 * @action: pointer to struct irqaction
45 * @ret: return value
46 *
47 * If the @ret value is set to IRQ_HANDLED, then we know that the corresponding
48 * @action->handler scuccessully handled this irq. Otherwise, the irq might be
49 * a shared irq line, or the irq was not handled successfully. Can be used in
50 * conjunction with the irq_handler_entry to understand irq handler latencies.
51 */
52 LTTNG_TRACEPOINT_EVENT(irq_handler_exit,
53
54 TP_PROTO(int irq, struct irqaction *action, int ret),
55
56 TP_ARGS(irq, action, ret),
57
58 TP_FIELDS(
59 ctf_integer(int, irq, irq)
60 ctf_integer(int, ret, ret)
61 )
62 )
63
64 LTTNG_TRACEPOINT_EVENT_CLASS(irq_softirq,
65
66 TP_PROTO(unsigned int vec_nr),
67
68 TP_ARGS(vec_nr),
69
70 TP_FIELDS(
71 ctf_integer(unsigned int, vec, vec_nr)
72 )
73 )
74
75 /**
76 * softirq_entry - called immediately before the softirq handler
77 * @vec_nr: softirq vector number
78 *
79 * When used in combination with the softirq_exit tracepoint
80 * we can determine the softirq handler runtine.
81 */
82 LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(irq_softirq, softirq_entry,
83
84 irq_softirq_entry,
85
86 TP_PROTO(unsigned int vec_nr),
87
88 TP_ARGS(vec_nr)
89 )
90
91 /**
92 * softirq_exit - called immediately after the softirq handler returns
93 * @vec_nr: softirq vector number
94 *
95 * When used in combination with the softirq_entry tracepoint
96 * we can determine the softirq handler runtine.
97 */
98 LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(irq_softirq, softirq_exit,
99
100 irq_softirq_exit,
101
102 TP_PROTO(unsigned int vec_nr),
103
104 TP_ARGS(vec_nr)
105 )
106
107 /**
108 * softirq_raise - called immediately when a softirq is raised
109 * @vec_nr: softirq vector number
110 *
111 * When used in combination with the softirq_entry tracepoint
112 * we can determine the softirq raise to run latency.
113 */
114 LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(irq_softirq, softirq_raise,
115
116 irq_softirq_raise,
117
118 TP_PROTO(unsigned int vec_nr),
119
120 TP_ARGS(vec_nr)
121 )
122
123 #endif /* LTTNG_TRACE_IRQ_H */
124
125 /* This part must be outside protection */
126 #include <probes/define_trace.h>
This page took 0.031824 seconds and 4 git commands to generate.