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.035 / U:30.960 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site