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 DEFINE_EVENT
  44#define DEFINE_EVENT(template, name, proto, args) \
  45        DEFINE_TRACE(name)
  46
  47#undef DEFINE_EVENT_FN
  48#define DEFINE_EVENT_FN(template, name, proto, args, reg, unreg) \
  49        DEFINE_TRACE_FN(name, reg, unreg)
  50
  51#undef DEFINE_EVENT_PRINT
  52#define DEFINE_EVENT_PRINT(template, name, proto, args, print)  \
  53        DEFINE_TRACE(name)
  54
  55#undef DEFINE_EVENT_CONDITION
  56#define DEFINE_EVENT_CONDITION(template, name, proto, args, cond) \
  57        DEFINE_EVENT(template, name, PARAMS(proto), PARAMS(args))
  58
  59#undef DECLARE_TRACE
  60#define DECLARE_TRACE(name, proto, args)        \
  61        DEFINE_TRACE(name)
  62
  63#undef TRACE_INCLUDE
  64#undef __TRACE_INCLUDE
  65
  66#ifndef TRACE_INCLUDE_FILE
  67# define TRACE_INCLUDE_FILE TRACE_SYSTEM
  68# define UNDEF_TRACE_INCLUDE_FILE
  69#endif
  70
  71#ifndef TRACE_INCLUDE_PATH
  72# define __TRACE_INCLUDE(system) <trace/events/system.h>
  73# define UNDEF_TRACE_INCLUDE_PATH
  74#else
  75# define __TRACE_INCLUDE(system) __stringify(TRACE_INCLUDE_PATH/system.h)
  76#endif
  77
  78# define TRACE_INCLUDE(system) __TRACE_INCLUDE(system)
  79
  80/* Let the trace headers be reread */
  81#define TRACE_HEADER_MULTI_READ
  82
  83#include TRACE_INCLUDE(TRACE_INCLUDE_FILE)
  84
  85/* Make all open coded DECLARE_TRACE nops */
  86#undef DECLARE_TRACE
  87#define DECLARE_TRACE(name, proto, args)
  88
  89#ifdef CONFIG_EVENT_TRACING
  90#include <trace/ftrace.h>
  91#endif
  92
  93#undef TRACE_EVENT
  94#undef TRACE_EVENT_FN
  95#undef TRACE_EVENT_CONDITION
  96#undef DECLARE_EVENT_CLASS
  97#undef DEFINE_EVENT
  98#undef DEFINE_EVENT_FN
  99#undef DEFINE_EVENT_PRINT
 100#undef DEFINE_EVENT_CONDITION
 101#undef TRACE_HEADER_MULTI_READ
 102#undef DECLARE_TRACE
 103
 104/* Only undef what we defined in this file */
 105#ifdef UNDEF_TRACE_INCLUDE_FILE
 106# undef TRACE_INCLUDE_FILE
 107# undef UNDEF_TRACE_INCLUDE_FILE
 108#endif
 109
 110#ifdef UNDEF_TRACE_INCLUDE_PATH
 111# undef TRACE_INCLUDE_PATH
 112# undef UNDEF_TRACE_INCLUDE_PATH
 113#endif
 114
 115/* We may be processing more files */
 116#define CREATE_TRACE_POINTS
 117
 118#endif /* CREATE_TRACE_POINTS */
 119