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