xref: /linux-6.15/include/trace/define_trace.h (revision 486df346)
1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
2a8d154b0SSteven Rostedt /*
34907cb7bSAnatol Pomozov  * Trace files that want to automate creation of all tracepoints defined
4a8d154b0SSteven Rostedt  * in their file should include this file. The following are macros that the
5a8d154b0SSteven Rostedt  * trace file may define:
6a8d154b0SSteven Rostedt  *
7a8d154b0SSteven Rostedt  * TRACE_SYSTEM defines the system the tracepoint is for
8a8d154b0SSteven Rostedt  *
9a8d154b0SSteven Rostedt  * TRACE_INCLUDE_FILE if the file name is something other than TRACE_SYSTEM.h
10a8d154b0SSteven Rostedt  *     This macro may be defined to tell define_trace.h what file to include.
11a8d154b0SSteven Rostedt  *     Note, leave off the ".h".
12a8d154b0SSteven Rostedt  *
13a8d154b0SSteven Rostedt  * TRACE_INCLUDE_PATH if the path is something other than core kernel include/trace
14a8d154b0SSteven Rostedt  *     then this macro can define the path to use. Note, the path is relative to
15a8d154b0SSteven Rostedt  *     define_trace.h, not the file including it. Full path names for out of tree
16a8d154b0SSteven Rostedt  *     modules must be used.
17a8d154b0SSteven Rostedt  */
18a8d154b0SSteven Rostedt 
19a8d154b0SSteven Rostedt #ifdef CREATE_TRACE_POINTS
20a8d154b0SSteven Rostedt 
21a8d154b0SSteven Rostedt /* Prevent recursion */
22a8d154b0SSteven Rostedt #undef CREATE_TRACE_POINTS
23a8d154b0SSteven Rostedt 
24a8d154b0SSteven Rostedt #include <linux/stringify.h>
25a8d154b0SSteven Rostedt 
26a8d154b0SSteven Rostedt #undef TRACE_EVENT
27a8d154b0SSteven Rostedt #define TRACE_EVENT(name, proto, args, tstruct, assign, print)	\
28d25e37d8SSteven Rostedt (VMware) 	DEFINE_TRACE(name, PARAMS(proto), PARAMS(args))
29a8d154b0SSteven Rostedt 
30287050d3SSteven Rostedt #undef TRACE_EVENT_CONDITION
31287050d3SSteven Rostedt #define TRACE_EVENT_CONDITION(name, proto, args, cond, tstruct, assign, print) \
32287050d3SSteven Rostedt 	TRACE_EVENT(name,						\
33287050d3SSteven Rostedt 		PARAMS(proto),						\
34287050d3SSteven Rostedt 		PARAMS(args),						\
35287050d3SSteven Rostedt 		PARAMS(tstruct),					\
36287050d3SSteven Rostedt 		PARAMS(assign),						\
37287050d3SSteven Rostedt 		PARAMS(print))
38287050d3SSteven Rostedt 
3997419875SJosh Stone #undef TRACE_EVENT_FN
4097419875SJosh Stone #define TRACE_EVENT_FN(name, proto, args, tstruct,		\
4197419875SJosh Stone 		assign, print, reg, unreg)			\
42d25e37d8SSteven Rostedt (VMware) 	DEFINE_TRACE_FN(name, reg, unreg, PARAMS(proto), PARAMS(args))
4397419875SJosh Stone 
442701121bSDenis Kirjanov #undef TRACE_EVENT_FN_COND
452701121bSDenis Kirjanov #define TRACE_EVENT_FN_COND(name, proto, args, cond, tstruct,		\
462701121bSDenis Kirjanov 		assign, print, reg, unreg)			\
47d25e37d8SSteven Rostedt (VMware) 	DEFINE_TRACE_FN(name, reg, unreg, PARAMS(proto), PARAMS(args))
482701121bSDenis Kirjanov 
490e6caab8SMathieu Desnoyers #undef TRACE_EVENT_SYSCALL
500e6caab8SMathieu Desnoyers #define TRACE_EVENT_SYSCALL(name, proto, args, struct, assign, print, reg, unreg) \
51654ced4aSMathieu Desnoyers 	DEFINE_TRACE_SYSCALL(name, reg, unreg, PARAMS(proto), PARAMS(args))
520e6caab8SMathieu Desnoyers 
5316336345SYafang Shao #undef TRACE_EVENT_NOP
5416336345SYafang Shao #define TRACE_EVENT_NOP(name, proto, args, struct, assign, print)
5516336345SYafang Shao 
5616336345SYafang Shao #undef DEFINE_EVENT_NOP
5716336345SYafang Shao #define DEFINE_EVENT_NOP(template, name, proto, args)
5816336345SYafang Shao 
59ff038f5cSSteven Rostedt #undef DEFINE_EVENT
60ff038f5cSSteven Rostedt #define DEFINE_EVENT(template, name, proto, args) \
61d25e37d8SSteven Rostedt (VMware) 	DEFINE_TRACE(name, PARAMS(proto), PARAMS(args))
62ff038f5cSSteven Rostedt 
63f5abaa1bSSteven Rostedt #undef DEFINE_EVENT_FN
64f5abaa1bSSteven Rostedt #define DEFINE_EVENT_FN(template, name, proto, args, reg, unreg) \
65d25e37d8SSteven Rostedt (VMware) 	DEFINE_TRACE_FN(name, reg, unreg, PARAMS(proto), PARAMS(args))
66f5abaa1bSSteven Rostedt 
67e5bc9721SSteven Rostedt #undef DEFINE_EVENT_PRINT
68e5bc9721SSteven Rostedt #define DEFINE_EVENT_PRINT(template, name, proto, args, print)	\
69d25e37d8SSteven Rostedt (VMware) 	DEFINE_TRACE(name, PARAMS(proto), PARAMS(args))
70e5bc9721SSteven Rostedt 
71287050d3SSteven Rostedt #undef DEFINE_EVENT_CONDITION
72287050d3SSteven Rostedt #define DEFINE_EVENT_CONDITION(template, name, proto, args, cond) \
73287050d3SSteven Rostedt 	DEFINE_EVENT(template, name, PARAMS(proto), PARAMS(args))
74287050d3SSteven Rostedt 
75a8d154b0SSteven Rostedt #undef DECLARE_TRACE
76a8d154b0SSteven Rostedt #define DECLARE_TRACE(name, proto, args)	\
77d25e37d8SSteven Rostedt (VMware) 	DEFINE_TRACE(name, PARAMS(proto), PARAMS(args))
78a8d154b0SSteven Rostedt 
79*486df346SGabriele Monaco #undef DECLARE_TRACE_CONDITION
80*486df346SGabriele Monaco #define DECLARE_TRACE_CONDITION(name, proto, args, cond)	\
81*486df346SGabriele Monaco 	DEFINE_TRACE(name, PARAMS(proto), PARAMS(args))
82*486df346SGabriele Monaco 
83ad37bcd9SAlice Ryhl /* If requested, create helpers for calling these tracepoints from Rust. */
84ad37bcd9SAlice Ryhl #ifdef CREATE_RUST_TRACE_POINTS
85ad37bcd9SAlice Ryhl #undef DEFINE_RUST_DO_TRACE
86ad37bcd9SAlice Ryhl #define DEFINE_RUST_DO_TRACE(name, proto, args)	\
87ad37bcd9SAlice Ryhl 	__DEFINE_RUST_DO_TRACE(name, PARAMS(proto), PARAMS(args))
88ad37bcd9SAlice Ryhl #endif
89ad37bcd9SAlice Ryhl 
90a8d154b0SSteven Rostedt #undef TRACE_INCLUDE
91a8d154b0SSteven Rostedt #undef __TRACE_INCLUDE
92a8d154b0SSteven Rostedt 
93a8d154b0SSteven Rostedt #ifndef TRACE_INCLUDE_FILE
94a8d154b0SSteven Rostedt # define TRACE_INCLUDE_FILE TRACE_SYSTEM
95a8d154b0SSteven Rostedt # define UNDEF_TRACE_INCLUDE_FILE
96a8d154b0SSteven Rostedt #endif
97a8d154b0SSteven Rostedt 
98a8d154b0SSteven Rostedt #ifndef TRACE_INCLUDE_PATH
99ad8d75ffSSteven Rostedt # define __TRACE_INCLUDE(system) <trace/events/system.h>
100c2518c43SSteven Rostedt # define UNDEF_TRACE_INCLUDE_PATH
101a8d154b0SSteven Rostedt #else
102a8d154b0SSteven Rostedt # define __TRACE_INCLUDE(system) __stringify(TRACE_INCLUDE_PATH/system.h)
103a8d154b0SSteven Rostedt #endif
104a8d154b0SSteven Rostedt 
105a8d154b0SSteven Rostedt # define TRACE_INCLUDE(system) __TRACE_INCLUDE(system)
106a8d154b0SSteven Rostedt 
107a8d154b0SSteven Rostedt /* Let the trace headers be reread */
108a8d154b0SSteven Rostedt #define TRACE_HEADER_MULTI_READ
109a8d154b0SSteven Rostedt 
110a8d154b0SSteven Rostedt #include TRACE_INCLUDE(TRACE_INCLUDE_FILE)
111a8d154b0SSteven Rostedt 
1122e26ca71SSteven Rostedt /* Make all open coded DECLARE_TRACE nops */
1132e26ca71SSteven Rostedt #undef DECLARE_TRACE
1142e26ca71SSteven Rostedt #define DECLARE_TRACE(name, proto, args)
115*486df346SGabriele Monaco #undef DECLARE_TRACE_CONDITION
116*486df346SGabriele Monaco #define DECLARE_TRACE_CONDITION(name, proto, args, cond)
1172e26ca71SSteven Rostedt 
118c63b7682STal Shorer #ifdef TRACEPOINTS_ENABLED
1192167ae72SSteven Rostedt (Red Hat) #include <trace/trace_events.h>
120ee53bbd1SSteven Rostedt (Red Hat) #include <trace/perf.h>
121c4f6699dSAlexei Starovoitov #include <trace/bpf_probe.h>
122f42c85e7SSteven Rostedt #endif
123f42c85e7SSteven Rostedt 
1245ac35daaSXiao Guangrong #undef TRACE_EVENT
1256c347d43SFrederic Weisbecker #undef TRACE_EVENT_FN
1262701121bSDenis Kirjanov #undef TRACE_EVENT_FN_COND
1270e6caab8SMathieu Desnoyers #undef TRACE_EVENT_SYSCALL
128287050d3SSteven Rostedt #undef TRACE_EVENT_CONDITION
12916336345SYafang Shao #undef TRACE_EVENT_NOP
13016336345SYafang Shao #undef DEFINE_EVENT_NOP
131091ad365SIngo Molnar #undef DECLARE_EVENT_CLASS
132ff038f5cSSteven Rostedt #undef DEFINE_EVENT
133f5abaa1bSSteven Rostedt #undef DEFINE_EVENT_FN
134e5bc9721SSteven Rostedt #undef DEFINE_EVENT_PRINT
135287050d3SSteven Rostedt #undef DEFINE_EVENT_CONDITION
136a8d154b0SSteven Rostedt #undef TRACE_HEADER_MULTI_READ
1372e26ca71SSteven Rostedt #undef DECLARE_TRACE
138*486df346SGabriele Monaco #undef DECLARE_TRACE_CONDITION
139a8d154b0SSteven Rostedt 
140a8d154b0SSteven Rostedt /* Only undef what we defined in this file */
141a8d154b0SSteven Rostedt #ifdef UNDEF_TRACE_INCLUDE_FILE
142c2518c43SSteven Rostedt # undef TRACE_INCLUDE_FILE
143a8d154b0SSteven Rostedt # undef UNDEF_TRACE_INCLUDE_FILE
144a8d154b0SSteven Rostedt #endif
145a8d154b0SSteven Rostedt 
146c2518c43SSteven Rostedt #ifdef UNDEF_TRACE_INCLUDE_PATH
147a8d154b0SSteven Rostedt # undef TRACE_INCLUDE_PATH
148c2518c43SSteven Rostedt # undef UNDEF_TRACE_INCLUDE_PATH
149a8d154b0SSteven Rostedt #endif
150a8d154b0SSteven Rostedt 
151ad37bcd9SAlice Ryhl #ifdef CREATE_RUST_TRACE_POINTS
152ad37bcd9SAlice Ryhl # undef DEFINE_RUST_DO_TRACE
153ad37bcd9SAlice Ryhl # define DEFINE_RUST_DO_TRACE(name, proto, args)
154ad37bcd9SAlice Ryhl #endif
155ad37bcd9SAlice Ryhl 
156a8d154b0SSteven Rostedt /* We may be processing more files */
157a8d154b0SSteven Rostedt #define CREATE_TRACE_POINTS
158a8d154b0SSteven Rostedt 
159a8d154b0SSteven Rostedt #endif /* CREATE_TRACE_POINTS */
160