root/include/trace/stages/init.h

#define __app__(x, y) str__##x##y
#define __app(x, y) __app__(x, y)

#define TRACE_SYSTEM_STRING __app(TRACE_SYSTEM_VAR,__trace_system_name)

#define TRACE_MAKE_SYSTEM_STR()                         \
        static const char TRACE_SYSTEM_STRING[] =       \
                __stringify(TRACE_SYSTEM)

TRACE_MAKE_SYSTEM_STR();

#undef TRACE_DEFINE_ENUM
#define TRACE_DEFINE_ENUM(a)                            \
        static struct trace_eval_map __used __initdata  \
        __##TRACE_SYSTEM##_##a =                        \
        {                                               \
                .system = TRACE_SYSTEM_STRING,          \
                .eval_string = #a,                      \
                .eval_value = a                         \
        };                                              \
        static struct trace_eval_map __used             \
        __section("_ftrace_eval_map")                   \
        *TRACE_SYSTEM##_##a = &__##TRACE_SYSTEM##_##a

#undef TRACE_DEFINE_SIZEOF
#define TRACE_DEFINE_SIZEOF(a)                          \
        static struct trace_eval_map __used __initdata  \
        __##TRACE_SYSTEM##_##a =                        \
        {                                               \
                .system = TRACE_SYSTEM_STRING,          \
                .eval_string = "sizeof(" #a ")",        \
                .eval_value = sizeof(a)                 \
        };                                              \
        static struct trace_eval_map __used             \
        __section("_ftrace_eval_map")                   \
        *TRACE_SYSTEM##_##a = &__##TRACE_SYSTEM##_##a