linux/include/trace/define_trace.h
<<
>>
Prefs
   1/*
   2 * Trace files that want to automate creation of all tracepoints defined
   3 * in their file should include this file. The following are macros that the
   4 * trace file may define:
   5 *
   6 * TRACE_SYSTEM defines the system the tracepoint is for
   7 *
   8 * TRACE_INCLUDE_FILE if the file name is something other than TRACE_SYSTEM.h
   9 *     This macro may be defined to tell define_trace.h what file to include.
  10 *     Note, leave off the ".h".
  11 *
  12 * TRACE_INCLUDE_PATH if the path is something other than core kernel include/trace
  13 *     then this macro can define the path to use. Note, the path is relative to
  14 *     define_trace.h, not the file including it. Full path names for out of tree
  15 *     modules must be used.
  16 */
  17
  18#ifdef CREATE_TRACE_POINTS
  19
  20/* Prevent recursion */
  21#undef CREATE_TRACE_POINTS
  22
  23#include <linux/stringify.h>
  24
  25#undef TRACE_EVENT
  26#define TRACE_EVENT(name, proto, args, tstruct, assign, print)  \
  27        DEFINE_TRACE(name)
  28
  29#undef TRACE_EVENT_CONDITION
  30#define TRACE_EVENT_CONDITION(name, proto, args, cond, tstruct, assign, print) \
  31        TRACE_EVENT(name,                                               \
  32                PARAMS(proto),                                          \
  33                PARAMS(args),                                           \
  34                PARAMS(tstruct),                                        \
  35                PARAMS(assign),                                         \
  36                PARAMS(print))
  37
  38#undef TRACE_EVENT_FN
  39#define TRACE_EVENT_FN(name, proto, args, tstruct,              \
  40                assign, print, reg, unreg)                      \
  41        DEFINE_TRACE_FN(name, reg, unreg)
  42
  43#undef TRACE_EVENT_FN_COND
  44#define TRACE_EVENT_FN_COND(name, proto, args, cond, tstruct,           \
  45                assign, print, reg, unreg)                      \
  46        DEFINE_TRACE_FN(name, reg, unreg)
  47
  48#undef DEFINE_EVENT
  49#define DEFINE_EVENT(template, name, proto, args) \
  50        DEFINE_TRACE(name)
  51
  52#undef DEFINE_EVENT_FN
  53#define DEFINE_EVENT_FN(template, name, proto, args, reg, unreg) \
  54        DEFINE_TRACE_FN(name, reg, unreg)
  55
  56#undef DEFINE_EVENT_PRINT
  57#define DEFINE_EVENT_PRINT(template, name, proto, args, print)  \
  58        DEFINE_TRACE(name)
  59
  60#undef DEFINE_EVENT_CONDITION
  61#define DEFINE_EVENT_CONDITION(template, name, proto, args, cond) \
  62        DEFINE_EVENT(template, name, PARAMS(proto), PARAMS(args))
  63
  64#undef DECLARE_TRACE
  65#define DECLARE_TRACE(name, proto, args)        \
  66        DEFINE_TRACE(name)
  67
  68#undef TRACE_INCLUDE
  69#undef __TRACE_INCLUDE
  70
  71#ifndef TRACE_INCLUDE_FILE
  72# define TRACE_INCLUDE_FILE TRACE_SYSTEM
  73# define UNDEF_TRACE_INCLUDE_FILE
  74#endif
  75
  76#ifndef TRACE_INCLUDE_PATH
  77# define __TRACE_INCLUDE(system) <trace/events/system.h>
  78# define UNDEF_TRACE_INCLUDE_PATH
  79#else
  80# define __TRACE_INCLUDE(system) __stringify(TRACE_INCLUDE_PATH/system.h)
  81#endif
  82
  83# define TRACE_INCLUDE(system) __TRACE_INCLUDE(system)
  84
  85/* Let the trace headers be reread */
  86#define TRACE_HEADER_MULTI_READ
  87
  88#include TRACE_INCLUDE(TRACE_INCLUDE_FILE)
  89
  90/* Make all open coded DECLARE_TRACE nops */
  91#undef DECLARE_TRACE
  92#define DECLARE_TRACE(name, proto, args)
  93
  94#ifdef TRACEPOINTS_ENABLED
  95#include <trace/trace_events.h>
  96#include <trace/perf.h>
  97#endif
  98
  99#undef TRACE_EVENT
 100#undef TRACE_EVENT_FN
 101#undef TRACE_EVENT_FN_COND
 102#undef TRACE_EVENT_CONDITION
 103#undef DECLARE_EVENT_CLASS
 104#undef DEFINE_EVENT
 105#undef DEFINE_EVENT_FN
 106#undef DEFINE_EVENT_PRINT
 107#undef DEFINE_EVENT_CONDITION
 108#undef TRACE_HEADER_MULTI_READ
 109#undef DECLARE_TRACE
 110
 111/* Only undef what we defined in this file */
 112#ifdef UNDEF_TRACE_INCLUDE_FILE
 113# undef TRACE_INCLUDE_FILE
 114# undef UNDEF_TRACE_INCLUDE_FILE
 115#endif
 116
 117#ifdef UNDEF_TRACE_INCLUDE_PATH
 118# undef TRACE_INCLUDE_PATH
 119# undef UNDEF_TRACE_INCLUDE_PATH
 120#endif
 121
 122/* We may be processing more files */
 123#define CREATE_TRACE_POINTS
 124
 125#endif /* CREATE_TRACE_POINTS */
 126