Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/include/trace/define_trace.h
26285 views
1
/* SPDX-License-Identifier: GPL-2.0 */
2
/*
3
* Trace files that want to automate creation of all tracepoints defined
4
* in their file should include this file. The following are macros that the
5
* trace file may define:
6
*
7
* TRACE_SYSTEM defines the system the tracepoint is for
8
*
9
* TRACE_INCLUDE_FILE if the file name is something other than TRACE_SYSTEM.h
10
* This macro may be defined to tell define_trace.h what file to include.
11
* Note, leave off the ".h".
12
*
13
* TRACE_INCLUDE_PATH if the path is something other than core kernel include/trace
14
* then this macro can define the path to use. Note, the path is relative to
15
* define_trace.h, not the file including it. Full path names for out of tree
16
* modules must be used.
17
*/
18
19
#ifdef CREATE_TRACE_POINTS
20
21
/* Prevent recursion */
22
#undef CREATE_TRACE_POINTS
23
24
#include <linux/stringify.h>
25
26
#undef TRACE_EVENT
27
#define TRACE_EVENT(name, proto, args, tstruct, assign, print) \
28
DEFINE_TRACE(name, PARAMS(proto), PARAMS(args))
29
30
#undef TRACE_EVENT_CONDITION
31
#define TRACE_EVENT_CONDITION(name, proto, args, cond, tstruct, assign, print) \
32
TRACE_EVENT(name, \
33
PARAMS(proto), \
34
PARAMS(args), \
35
PARAMS(tstruct), \
36
PARAMS(assign), \
37
PARAMS(print))
38
39
#undef TRACE_EVENT_FN
40
#define TRACE_EVENT_FN(name, proto, args, tstruct, \
41
assign, print, reg, unreg) \
42
DEFINE_TRACE_FN(name, reg, unreg, PARAMS(proto), PARAMS(args))
43
44
#undef TRACE_EVENT_FN_COND
45
#define TRACE_EVENT_FN_COND(name, proto, args, cond, tstruct, \
46
assign, print, reg, unreg) \
47
DEFINE_TRACE_FN(name, reg, unreg, PARAMS(proto), PARAMS(args))
48
49
#undef TRACE_EVENT_SYSCALL
50
#define TRACE_EVENT_SYSCALL(name, proto, args, struct, assign, print, reg, unreg) \
51
DEFINE_TRACE_SYSCALL(name, reg, unreg, PARAMS(proto), PARAMS(args))
52
53
#undef TRACE_EVENT_NOP
54
#define TRACE_EVENT_NOP(name, proto, args, struct, assign, print)
55
56
#undef DEFINE_EVENT_NOP
57
#define DEFINE_EVENT_NOP(template, name, proto, args)
58
59
#undef DEFINE_EVENT
60
#define DEFINE_EVENT(template, name, proto, args) \
61
DEFINE_TRACE(name, PARAMS(proto), PARAMS(args))
62
63
#undef DEFINE_EVENT_FN
64
#define DEFINE_EVENT_FN(template, name, proto, args, reg, unreg) \
65
DEFINE_TRACE_FN(name, reg, unreg, PARAMS(proto), PARAMS(args))
66
67
#undef DEFINE_EVENT_PRINT
68
#define DEFINE_EVENT_PRINT(template, name, proto, args, print) \
69
DEFINE_TRACE(name, PARAMS(proto), PARAMS(args))
70
71
#undef DEFINE_EVENT_CONDITION
72
#define DEFINE_EVENT_CONDITION(template, name, proto, args, cond) \
73
DEFINE_EVENT(template, name, PARAMS(proto), PARAMS(args))
74
75
#undef DECLARE_TRACE
76
#define DECLARE_TRACE(name, proto, args) \
77
DEFINE_TRACE(name##_tp, PARAMS(proto), PARAMS(args))
78
79
#undef DECLARE_TRACE_CONDITION
80
#define DECLARE_TRACE_CONDITION(name, proto, args, cond) \
81
DEFINE_TRACE(name##_tp, PARAMS(proto), PARAMS(args))
82
83
#undef DECLARE_TRACE_EVENT
84
#define DECLARE_TRACE_EVENT(name, proto, args) \
85
DEFINE_TRACE(name, PARAMS(proto), PARAMS(args))
86
87
#undef DECLARE_TRACE_EVENT_CONDITION
88
#define DECLARE_TRACE_EVENT_CONDITION(name, proto, args, cond) \
89
DEFINE_TRACE(name, PARAMS(proto), PARAMS(args))
90
91
/* If requested, create helpers for calling these tracepoints from Rust. */
92
#ifdef CREATE_RUST_TRACE_POINTS
93
#undef DEFINE_RUST_DO_TRACE
94
#define DEFINE_RUST_DO_TRACE(name, proto, args) \
95
__DEFINE_RUST_DO_TRACE(name, PARAMS(proto), PARAMS(args))
96
#endif
97
98
#undef TRACE_INCLUDE
99
#undef __TRACE_INCLUDE
100
101
#ifndef TRACE_INCLUDE_FILE
102
# define TRACE_INCLUDE_FILE TRACE_SYSTEM
103
# define UNDEF_TRACE_INCLUDE_FILE
104
#endif
105
106
#ifndef TRACE_INCLUDE_PATH
107
# define __TRACE_INCLUDE(system) <trace/events/system.h>
108
# define UNDEF_TRACE_INCLUDE_PATH
109
#else
110
# define __TRACE_INCLUDE(system) __stringify(TRACE_INCLUDE_PATH/system.h)
111
#endif
112
113
# define TRACE_INCLUDE(system) __TRACE_INCLUDE(system)
114
115
/* Let the trace headers be reread */
116
#define TRACE_HEADER_MULTI_READ
117
118
#include TRACE_INCLUDE(TRACE_INCLUDE_FILE)
119
120
/* Make all open coded DECLARE_TRACE nops */
121
#undef DECLARE_TRACE
122
#define DECLARE_TRACE(name, proto, args)
123
#undef DECLARE_TRACE_CONDITION
124
#define DECLARE_TRACE_CONDITION(name, proto, args, cond)
125
126
#undef DECLARE_TRACE_EVENT
127
#define DECLARE_TRACE_EVENT(name, proto, args)
128
#undef DECLARE_TRACE_EVENT_CONDITION
129
#define DECLARE_TRACE_EVENT_CONDITION(name, proto, args, cond)
130
131
#ifdef TRACEPOINTS_ENABLED
132
#include <trace/trace_events.h>
133
#include <trace/perf.h>
134
#include <trace/bpf_probe.h>
135
#endif
136
137
#undef TRACE_EVENT
138
#undef TRACE_EVENT_FN
139
#undef TRACE_EVENT_FN_COND
140
#undef TRACE_EVENT_SYSCALL
141
#undef TRACE_EVENT_CONDITION
142
#undef TRACE_EVENT_NOP
143
#undef DEFINE_EVENT_NOP
144
#undef DECLARE_EVENT_CLASS
145
#undef DEFINE_EVENT
146
#undef DEFINE_EVENT_FN
147
#undef DEFINE_EVENT_PRINT
148
#undef DEFINE_EVENT_CONDITION
149
#undef TRACE_HEADER_MULTI_READ
150
#undef DECLARE_TRACE
151
#undef DECLARE_TRACE_CONDITION
152
#undef DECLARE_TRACE_EVENT
153
#undef DECLARE_TRACE_EVENT_CONDITION
154
155
/* Only undef what we defined in this file */
156
#ifdef UNDEF_TRACE_INCLUDE_FILE
157
# undef TRACE_INCLUDE_FILE
158
# undef UNDEF_TRACE_INCLUDE_FILE
159
#endif
160
161
#ifdef UNDEF_TRACE_INCLUDE_PATH
162
# undef TRACE_INCLUDE_PATH
163
# undef UNDEF_TRACE_INCLUDE_PATH
164
#endif
165
166
#ifdef CREATE_RUST_TRACE_POINTS
167
# undef DEFINE_RUST_DO_TRACE
168
# define DEFINE_RUST_DO_TRACE(name, proto, args)
169
#endif
170
171
/* We may be processing more files */
172
#define CREATE_TRACE_POINTS
173
174
#endif /* CREATE_TRACE_POINTS */
175
176