lkml.org 
[lkml]   [2009]   [Mar]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 04/10] ftrace: ensure every event gets an id
    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>
    ---
    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-19 20:49    [W:0.033 / U:29.772 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site