1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifdef CONFIG_PREEMPTIRQ_EVENTS
5 #define TRACE_SYSTEM preemptirq
7 #if !defined(LTTNG_TRACE_PREEMPTIRQ_H) || defined(TRACE_HEADER_MULTI_READ)
8 #define LTTNG_TRACE_PREEMPTIRQ_H
10 #include <linux/ktime.h>
11 #include <linux/string.h>
12 #include <asm/sections.h>
13 #include <probes/lttng-tracepoint-event.h>
16 LTTNG_TRACEPOINT_EVENT_CLASS(preemptirq_template
,
18 TP_PROTO(unsigned long ip
, unsigned long parent_ip
),
20 TP_ARGS(ip
, parent_ip
),
23 ctf_integer_hex(unsigned long, caller
, ip
)
24 ctf_integer_hex(unsigned long, parent
, parent_ip
)
28 #ifndef CONFIG_PROVE_LOCKING
29 LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(preemptirq_template
, irq_disable
,
31 preemptirq_irq_disable
,
33 TP_PROTO(unsigned long ip
, unsigned long parent_ip
),
35 TP_ARGS(ip
, parent_ip
)
38 LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(preemptirq_template
, irq_enable
,
40 preemptirq_irq_enable
,
42 TP_PROTO(unsigned long ip
, unsigned long parent_ip
),
44 TP_ARGS(ip
, parent_ip
)
46 #endif /* !CONFIG_PROVE_LOCKING */
48 #ifdef CONFIG_DEBUG_PREEMPT
49 LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(preemptirq_template
, preempt_disable
,
51 preemptirq_preempt_disable
,
53 TP_PROTO(unsigned long ip
, unsigned long parent_ip
),
55 TP_ARGS(ip
, parent_ip
)
58 LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(preemptirq_template
, preempt_enable
,
60 preemptirq_preempt_enable
,
62 TP_PROTO(unsigned long ip
, unsigned long parent_ip
),
64 TP_ARGS(ip
, parent_ip
)
66 #endif /* CONFIG_DEBUG_PREEMPT */
68 #endif /* LTTNG_TRACE_PREEMPTIRQ_H */
70 /* This part must be outside protection */
71 #include <probes/define_trace.h>
73 #endif /* CONFIG_PREEMPTIRQ_EVENTS */