1
2#define __app__(x, y) str__##x##y
3#define __app(x, y) __app__(x, y)
4
5#define TRACE_SYSTEM_STRING __app(TRACE_SYSTEM_VAR,__trace_system_name)
6
7#define TRACE_MAKE_SYSTEM_STR() \
8 static const char TRACE_SYSTEM_STRING[] = \
9 __stringify(TRACE_SYSTEM)
10
11TRACE_MAKE_SYSTEM_STR();
12
13#undef TRACE_DEFINE_ENUM
14#define TRACE_DEFINE_ENUM(a) \
15 static struct trace_eval_map __used __initdata \
16 __##TRACE_SYSTEM##_##a = \
17 { \
18 .system = TRACE_SYSTEM_STRING, \
19 .eval_string = #a, \
20 .eval_value = a \
21 }; \
22 static struct trace_eval_map __used \
23 __section("_ftrace_eval_map") \
24 *TRACE_SYSTEM##_##a = &__##TRACE_SYSTEM##_##a
25
26#undef TRACE_DEFINE_SIZEOF
27#define TRACE_DEFINE_SIZEOF(a) \
28 static struct trace_eval_map __used __initdata \
29 __##TRACE_SYSTEM##_##a = \
30 { \
31 .system = TRACE_SYSTEM_STRING, \
32 .eval_string = "sizeof(" #a ")", \
33 .eval_value = sizeof(a) \
34 }; \
35 static struct trace_eval_map __used \
36 __section("_ftrace_eval_map") \
37 *TRACE_SYSTEM##_##a = &__##TRACE_SYSTEM##_##a
38

source code of linux/include/trace/stages/init.h