lkml.org 
[lkml]   [2009]   [Sep]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 4/6] ftrace: add compile-time check on F_printk()
    From: Li Zefan <lizf@cn.fujitsu.com>

    Make sure F_printk() has corrent format and args, and make sure
    changes in F_STRUCT() won't break F_printk().

    Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
    LKML-Reference: <4AADF6CC.1060809@cn.fujitsu.com>
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    ---
    kernel/trace/trace_export.c | 45 +++++++++++++++++++++++++++++++++++++++---
    1 files changed, 41 insertions(+), 4 deletions(-)

    diff --git a/kernel/trace/trace_export.c b/kernel/trace/trace_export.c
    index 4cb29d8..2435d55 100644
    --- a/kernel/trace/trace_export.c
    +++ b/kernel/trace/trace_export.c
    @@ -23,6 +23,47 @@
    #define __field_struct(type, item)

    #undef __field
    +#define __field(type, item) type item;
    +
    +#undef __field_desc
    +#define __field_desc(type, container, item) type item;
    +
    +#undef __array
    +#define __array(type, item, size) type item[size];
    +
    +#undef __array_desc
    +#define __array_desc(type, container, item, size) type item[size];
    +
    +#undef __dynamic_array
    +#define __dynamic_array(type, item) type item[];
    +
    +#undef F_STRUCT
    +#define F_STRUCT(args...) args
    +
    +#undef F_printk
    +#define F_printk(fmt, args...) fmt, args
    +
    +#undef FTRACE_ENTRY
    +#define FTRACE_ENTRY(name, struct_name, id, tstruct, print) \
    +struct ____ftrace_##name { \
    + tstruct \
    +}; \
    +static void __used ____ftrace_check_##name(void) \
    +{ \
    + struct ____ftrace_##name *__entry = NULL; \
    + \
    + /* force cmpile-time check on F_printk() */ \
    + printk(print); \
    +}
    +
    +#undef FTRACE_ENTRY_DUP
    +#define FTRACE_ENTRY_DUP(name, struct_name, id, tstruct, print) \
    + FTRACE_ENTRY(name, struct_name, id, PARAMS(tstruct), PARAMS(print))
    +
    +#include "trace_entries.h"
    +
    +
    +#undef __field
    #define __field(type, item) \
    ret = trace_seq_printf(s, "\tfield:" #type " " #item ";\t" \
    "offset:%zu;\tsize:%zu;\n", \
    @@ -88,10 +129,6 @@ ftrace_format_##name(struct ftrace_event_call *unused, \
    return ret; \
    }

    -#undef FTRACE_ENTRY_DUP
    -#define FTRACE_ENTRY_DUP(name, struct_name, id, tstruct, print) \
    - FTRACE_ENTRY(name, struct_name, id, PARAMS(tstruct), PARAMS(print))
    -
    #include "trace_entries.h"


    --
    1.6.3.3
    --


    \
     
     \ /
      Last update: 2009-09-14 18:39    [W:0.021 / U:53.964 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site