lkml.org 
[lkml]   [2012]   [Feb]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 6/9] ftrace: Add FTRACE_ENTRY_REG macro to allow event registration
    From: Jiri Olsa <jolsa@redhat.com>

    Adding FTRACE_ENTRY_REG macro so particular ftrace entries
    could specify registration function and thus become accesible
    via perf.

    This will be used in upcomming patch for function trace.

    Link: http://lkml.kernel.org/r/1329317514-8131-5-git-send-email-jolsa@redhat.com

    Acked-by: Frederic Weisbecker <fweisbec@gmail.com>
    Signed-off-by: Jiri Olsa <jolsa@redhat.com>
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    ---
    kernel/trace/trace.h | 4 ++++
    kernel/trace/trace_export.c | 18 ++++++++++++++++--
    2 files changed, 20 insertions(+), 2 deletions(-)

    diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h
    index 55c6ea0..638476a 100644
    --- a/kernel/trace/trace.h
    +++ b/kernel/trace/trace.h
    @@ -68,6 +68,10 @@ enum trace_type {
    #undef FTRACE_ENTRY_DUP
    #define FTRACE_ENTRY_DUP(name, name_struct, id, tstruct, printk)

    +#undef FTRACE_ENTRY_REG
    +#define FTRACE_ENTRY_REG(name, struct_name, id, tstruct, print, regfn) \
    + FTRACE_ENTRY(name, struct_name, id, PARAMS(tstruct), PARAMS(print))
    +
    #include "trace_entries.h"

    /*
    diff --git a/kernel/trace/trace_export.c b/kernel/trace/trace_export.c
    index bbeec31..f74de86 100644
    --- a/kernel/trace/trace_export.c
    +++ b/kernel/trace/trace_export.c
    @@ -18,6 +18,14 @@
    #undef TRACE_SYSTEM
    #define TRACE_SYSTEM ftrace

    +/*
    + * The FTRACE_ENTRY_REG macro allows ftrace entry to define register
    + * function and thus become accesible via perf.
    + */
    +#undef FTRACE_ENTRY_REG
    +#define FTRACE_ENTRY_REG(name, struct_name, id, tstruct, print, regfn) \
    + FTRACE_ENTRY(name, struct_name, id, PARAMS(tstruct), PARAMS(print))
    +
    /* not needed for this file */
    #undef __field_struct
    #define __field_struct(type, item)
    @@ -152,13 +160,14 @@ ftrace_define_fields_##name(struct ftrace_event_call *event_call) \
    #undef F_printk
    #define F_printk(fmt, args...) #fmt ", " __stringify(args)

    -#undef FTRACE_ENTRY
    -#define FTRACE_ENTRY(call, struct_name, etype, tstruct, print) \
    +#undef FTRACE_ENTRY_REG
    +#define FTRACE_ENTRY_REG(call, struct_name, etype, tstruct, print, regfn)\
    \
    struct ftrace_event_class event_class_ftrace_##call = { \
    .system = __stringify(TRACE_SYSTEM), \
    .define_fields = ftrace_define_fields_##call, \
    .fields = LIST_HEAD_INIT(event_class_ftrace_##call.fields),\
    + .reg = regfn, \
    }; \
    \
    struct ftrace_event_call __used event_##call = { \
    @@ -170,4 +179,9 @@ struct ftrace_event_call __used event_##call = { \
    struct ftrace_event_call __used \
    __attribute__((section("_ftrace_events"))) *__event_##call = &event_##call;

    +#undef FTRACE_ENTRY
    +#define FTRACE_ENTRY(call, struct_name, etype, tstruct, print) \
    + FTRACE_ENTRY_REG(call, struct_name, etype, \
    + PARAMS(tstruct), PARAMS(print), NULL)
    +
    #include "trace_entries.h"
    --
    1.7.8.3

    [unhandled content-type:application/pgp-signature]
    \
     
     \ /
      Last update: 2012-02-22 15:45    [W:0.025 / U:97.956 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site