Fix: scsi: sd: Atomic write support added in 6.11-rc1
[lttng-modules.git] / include / instrumentation / events / preemptirq.h
CommitLineData
61baff6e
MJ
1// SPDX-FileCopyrightText: 2017 Michael Jeanson <mjeanson@efficios.com>
2//
3// SPDX-License-Identifier: GPL-2.0-only
4
0bcebe87
MJ
5#ifdef CONFIG_PREEMPTIRQ_EVENTS
6
7#undef TRACE_SYSTEM
8#define TRACE_SYSTEM preemptirq
9
10#if !defined(LTTNG_TRACE_PREEMPTIRQ_H) || defined(TRACE_HEADER_MULTI_READ)
11#define LTTNG_TRACE_PREEMPTIRQ_H
12
13#include <linux/ktime.h>
14#include <linux/string.h>
15#include <asm/sections.h>
3b4aafcb 16#include <lttng/tracepoint-event.h>
0bcebe87 17
67325059
MJ
18/*
19 * The preemptirq probe is built when CONFIG_PREEMPTIRQ_EVENTS is defined.
20 */
0bcebe87
MJ
21
22LTTNG_TRACEPOINT_EVENT_CLASS(preemptirq_template,
23
24 TP_PROTO(unsigned long ip, unsigned long parent_ip),
25
26 TP_ARGS(ip, parent_ip),
27
28 TP_FIELDS(
29 ctf_integer_hex(unsigned long, caller, ip)
30 ctf_integer_hex(unsigned long, parent, parent_ip)
31 )
32)
33
67325059
MJ
34/*
35 * Tracing of irq enable / disable events is enabled
36 * on >= 4.19 when CONFIG_TRACE_IRQFLAGS is defined.
37 * on previous kernels when CONFIG_PROVE_LOCKING is NOT defined.
38 */
39#if defined(CONFIG_TRACE_IRQFLAGS)
40#define LTTNG_TRACE_IRQ
5f4c791e 41#elif (LTTNG_LINUX_VERSION_CODE < LTTNG_KERNEL_VERSION(4,19,0) && \
67325059
MJ
42 !defined(CONFIG_PROVE_LOCKING))
43#define LTTNG_TRACE_IRQ
44#endif
45
46#ifdef LTTNG_TRACE_IRQ
0bcebe87
MJ
47LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(preemptirq_template, irq_disable,
48
49 preemptirq_irq_disable,
50
51 TP_PROTO(unsigned long ip, unsigned long parent_ip),
52
53 TP_ARGS(ip, parent_ip)
54)
55
56LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(preemptirq_template, irq_enable,
57
58 preemptirq_irq_enable,
59
60 TP_PROTO(unsigned long ip, unsigned long parent_ip),
61
62 TP_ARGS(ip, parent_ip)
63)
67325059
MJ
64#endif /* LTTNG_TRACE_IRQ */
65
66/*
67 * Tracing of preempt enable / disable events is enabled
68 * on >= 4.19 when CONFIG_TRACE_PREEMPT_TOGGLE is defined.
69 * on previous kernels when CONFIG_DEBUG_PREEMPT is defined.
70 */
71#if defined(CONFIG_TRACE_PREEMPT_TOGGLE)
72#define LTTNG_TRACE_PREEMPT
5f4c791e 73#elif (LTTNG_LINUX_VERSION_CODE < LTTNG_KERNEL_VERSION(4,19,0) && \
67325059
MJ
74 defined(CONFIG_DEBUG_PREEMPT))
75#define LTTNG_TRACE_PREEMPT
76#endif
77
78#ifdef LTTNG_TRACE_PREEMPT
0bcebe87
MJ
79LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(preemptirq_template, preempt_disable,
80
81 preemptirq_preempt_disable,
82
83 TP_PROTO(unsigned long ip, unsigned long parent_ip),
84
85 TP_ARGS(ip, parent_ip)
86)
87
88LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(preemptirq_template, preempt_enable,
89
90 preemptirq_preempt_enable,
91
92 TP_PROTO(unsigned long ip, unsigned long parent_ip),
93
94 TP_ARGS(ip, parent_ip)
95)
67325059 96#endif /* LTTNG_TRACE_PREEMPT */
0bcebe87
MJ
97
98#endif /* LTTNG_TRACE_PREEMPTIRQ_H */
99
100/* This part must be outside protection */
3b4aafcb 101#include <lttng/define_trace.h>
0bcebe87
MJ
102
103#endif /* CONFIG_PREEMPTIRQ_EVENTS */
This page took 0.054894 seconds and 4 git commands to generate.