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