Skip to content

Commit

Permalink
ftrace: add compile-time check on F_printk()
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Li Zefan authored and Steven Rostedt committed Sep 14, 2009
1 parent c16de8f commit 05ffa2d
Showing 1 changed file with 41 additions and 4 deletions.
45 changes: 41 additions & 4 deletions kernel/trace/trace_export.c
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,47 @@
#undef __field_struct
#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" \
Expand Down Expand Up @@ -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"


Expand Down

0 comments on commit 05ffa2d

Please sign in to comment.