Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 28bea271 authored by Peter Zijlstra's avatar Peter Zijlstra Committed by Ingo Molnar
Browse files

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: default avatarPeter 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: default avatarIngo Molnar <mingo@elte.hu>
parent 23725aee
Loading
Loading
Loading
Loading
+14 −1
Original line number Diff line number Diff line
@@ -130,7 +130,19 @@ static void ftrace_unreg_event_##call(void) \
{									\
	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
#define TRACE_FORMAT(call, proto, args, fmt)				\
@@ -140,6 +152,7 @@ __attribute__((__aligned__(4))) \
__attribute__((section("_ftrace_events"))) event_##call = {		\
	.name			= #call,				\
	.system			= __stringify(TRACE_SYSTEM),		\
	.raw_init		= ftrace_init_event_##call,		\
	.regfunc		= ftrace_reg_event_##call,		\
	.unregfunc		= ftrace_unreg_event_##call,		\
}
+5 −0
Original line number Diff line number Diff line
@@ -481,6 +481,11 @@ int register_ftrace_event(struct trace_event *event)

	mutex_lock(&trace_event_mutex);

	if (!event) {
		ret = next_event_type++;
		goto out;
	}

	if (!event->type)
		event->type = next_event_type++;
	else if (event->type > __TRACE_LAST_TYPE) {