mirror of
https://github.com/adulau/aha.git
synced 2024-12-29 12:16:20 +00:00
ftrace: ensure every event gets an id
Impact: widen user-space visibe event IDs to all events Previously only TRACE_EVENT events got ids, because only they generated raw output which needs to be demuxed from the trace. In order to provide a unique ID for each event, register everybody, regardless. Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Paul Mackerras <paulus@samba.org> Cc: Steven Rostedt <rostedt@goodmis.org> LKML-Reference: <20090319194233.464914218@chello.nl> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
23725aeeab
commit
28bea271e5
2 changed files with 19 additions and 1 deletions
|
@ -130,7 +130,19 @@ static void ftrace_unreg_event_##call(void) \
|
||||||
{ \
|
{ \
|
||||||
unregister_trace_##call(ftrace_event_##call); \
|
unregister_trace_##call(ftrace_event_##call); \
|
||||||
} \
|
} \
|
||||||
|
\
|
||||||
|
static struct ftrace_event_call event_##call; \
|
||||||
|
\
|
||||||
|
static int ftrace_init_event_##call(void) \
|
||||||
|
{ \
|
||||||
|
int id; \
|
||||||
|
\
|
||||||
|
id = register_ftrace_event(NULL); \
|
||||||
|
if (!id) \
|
||||||
|
return -ENODEV; \
|
||||||
|
event_##call.id = id; \
|
||||||
|
return 0; \
|
||||||
|
}
|
||||||
|
|
||||||
#undef TRACE_FORMAT
|
#undef TRACE_FORMAT
|
||||||
#define TRACE_FORMAT(call, proto, args, fmt) \
|
#define TRACE_FORMAT(call, proto, args, fmt) \
|
||||||
|
@ -140,6 +152,7 @@ __attribute__((__aligned__(4))) \
|
||||||
__attribute__((section("_ftrace_events"))) event_##call = { \
|
__attribute__((section("_ftrace_events"))) event_##call = { \
|
||||||
.name = #call, \
|
.name = #call, \
|
||||||
.system = __stringify(TRACE_SYSTEM), \
|
.system = __stringify(TRACE_SYSTEM), \
|
||||||
|
.raw_init = ftrace_init_event_##call, \
|
||||||
.regfunc = ftrace_reg_event_##call, \
|
.regfunc = ftrace_reg_event_##call, \
|
||||||
.unregfunc = ftrace_unreg_event_##call, \
|
.unregfunc = ftrace_unreg_event_##call, \
|
||||||
}
|
}
|
||||||
|
|
|
@ -481,6 +481,11 @@ int register_ftrace_event(struct trace_event *event)
|
||||||
|
|
||||||
mutex_lock(&trace_event_mutex);
|
mutex_lock(&trace_event_mutex);
|
||||||
|
|
||||||
|
if (!event) {
|
||||||
|
ret = next_event_type++;
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
if (!event->type)
|
if (!event->type)
|
||||||
event->type = next_event_type++;
|
event->type = next_event_type++;
|
||||||
else if (event->type > __TRACE_LAST_TYPE) {
|
else if (event->type > __TRACE_LAST_TYPE) {
|
||||||
|
|
Loading…
Reference in a new issue