forked from Minki/linux
tracing: Give system name a pointer
Normally the compiler will use the same pointer for a string throughout the file. But there's no guarantee of that happening. Later changes will require that all events have the same pointer to the system string. Name the system string and have all events point to it. Testing this, it did not increases the size of the text, except for the notes section, which should not harm the real size any. Link: http://lkml.kernel.org/r/20150403013802.220157513@goodmis.org Reviewed-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> Tested-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
This commit is contained in:
parent
6e9dd8ddbd
commit
acd388fd3a
@ -202,7 +202,7 @@ enum trace_reg {
|
|||||||
struct ftrace_event_call;
|
struct ftrace_event_call;
|
||||||
|
|
||||||
struct ftrace_event_class {
|
struct ftrace_event_class {
|
||||||
char *system;
|
const char *system;
|
||||||
void *probe;
|
void *probe;
|
||||||
#ifdef CONFIG_PERF_EVENTS
|
#ifdef CONFIG_PERF_EVENTS
|
||||||
void *perf_probe;
|
void *perf_probe;
|
||||||
|
@ -18,6 +18,21 @@
|
|||||||
|
|
||||||
#include <linux/ftrace_event.h>
|
#include <linux/ftrace_event.h>
|
||||||
|
|
||||||
|
#ifndef TRACE_SYSTEM_VAR
|
||||||
|
#define TRACE_SYSTEM_VAR TRACE_SYSTEM
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#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();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* DECLARE_EVENT_CLASS can be used to add a generic function
|
* DECLARE_EVENT_CLASS can be used to add a generic function
|
||||||
* handlers for events. That is, if all events have the same
|
* handlers for events. That is, if all events have the same
|
||||||
@ -105,7 +120,6 @@
|
|||||||
|
|
||||||
#include TRACE_INCLUDE(TRACE_INCLUDE_FILE)
|
#include TRACE_INCLUDE(TRACE_INCLUDE_FILE)
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Stage 2 of the trace events.
|
* Stage 2 of the trace events.
|
||||||
*
|
*
|
||||||
@ -692,7 +706,7 @@ static inline void ftrace_test_probe_##call(void) \
|
|||||||
_TRACE_PERF_PROTO(call, PARAMS(proto)); \
|
_TRACE_PERF_PROTO(call, PARAMS(proto)); \
|
||||||
static const char print_fmt_##call[] = print; \
|
static const char print_fmt_##call[] = print; \
|
||||||
static struct ftrace_event_class __used __refdata event_class_##call = { \
|
static struct ftrace_event_class __used __refdata event_class_##call = { \
|
||||||
.system = __stringify(TRACE_SYSTEM), \
|
.system = TRACE_SYSTEM_STRING, \
|
||||||
.define_fields = ftrace_define_fields_##call, \
|
.define_fields = ftrace_define_fields_##call, \
|
||||||
.fields = LIST_HEAD_INIT(event_class_##call.fields),\
|
.fields = LIST_HEAD_INIT(event_class_##call.fields),\
|
||||||
.raw_init = trace_event_raw_init, \
|
.raw_init = trace_event_raw_init, \
|
||||||
@ -735,6 +749,7 @@ __attribute__((section("_ftrace_events"))) *__event_##call = &event_##call
|
|||||||
|
|
||||||
#include TRACE_INCLUDE(TRACE_INCLUDE_FILE)
|
#include TRACE_INCLUDE(TRACE_INCLUDE_FILE)
|
||||||
|
|
||||||
|
#undef TRACE_SYSTEM_VAR
|
||||||
|
|
||||||
#ifdef CONFIG_PERF_EVENTS
|
#ifdef CONFIG_PERF_EVENTS
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user