lkml.org 
[lkml]   [2009]   [Mar]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [RFC][PATCH 05/11] ftrace: ensure every event gets an id

On Tue, 17 Mar 2009, Peter Zijlstra wrote:

> 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.

If this is about the TRACE_FORMAT, they use the TRACE_PRINT format, which
is exported.

Again, I need to look at the rest of the patches ;-)

-- Steve

>
> Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
> ---
> kernel/trace/trace_events_stage_3.h | 15 ++++++++++++++-
> kernel/trace/trace_output.c | 5 +++++
> 2 files changed, 19 insertions(+), 1 deletion(-)
>
> Index: linux-2.6/kernel/trace/trace_events_stage_3.h
> ===================================================================
> --- linux-2.6.orig/kernel/trace/trace_events_stage_3.h
> +++ linux-2.6/kernel/trace/trace_events_stage_3.h
> @@ -130,7 +130,19 @@ static void ftrace_unreg_event_##call(vo
> { \
> 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, \
> }
> Index: linux-2.6/kernel/trace/trace_output.c
> ===================================================================
> --- linux-2.6.orig/kernel/trace/trace_output.c
> +++ linux-2.6/kernel/trace/trace_output.c
> @@ -444,6 +444,11 @@ int register_ftrace_event(struct trace_e
>
> 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) {
>
> --
>
>


\
 
 \ /
  Last update: 2009-03-17 23:57    [W:0.351 / U:0.108 seconds]
©2003-2014 Jasper Spaans. Advertise on this site