aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrederic Weisbecker <fweisbec@gmail.com>2009-08-11 11:42:52 -0400
committerFrederic Weisbecker <fweisbec@gmail.com>2009-08-11 14:35:29 -0400
commite8f9f4d79a677f55c8ec3acbe87b33a87e2df0de (patch)
tree3b20dcf2c7b49fe23e0641805ca7aaac921bc46d
parent0ac676fb50f5f8a22e5e80afc40bf38e31b77c00 (diff)
tracing: Add ftrace event call parameter to its field descriptor handler
Add the struct ftrace_event_call as a parameter of its show_format() callback. This way we can use it from the syscall trace events to retrieve the syscall name from the ftrace event call parameter and describe its fields using the syscalls metadata. Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com> Cc: Lai Jiangshan <laijs@cn.fujitsu.com> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca> Cc: Jiaying Zhang <jiayingz@google.com> Cc: Martin Bligh <mbligh@google.com> Cc: Li Zefan <lizf@cn.fujitsu.com> Cc: Masami Hiramatsu <mhiramat@redhat.com> Cc: Jason Baron <jbaron@redhat.com>
-rw-r--r--include/linux/ftrace_event.h3
-rw-r--r--include/trace/ftrace.h3
-rw-r--r--kernel/trace/trace_events.c2
-rw-r--r--kernel/trace/trace_export.c6
4 files changed, 9 insertions, 5 deletions
diff --git a/include/linux/ftrace_event.h b/include/linux/ftrace_event.h
index 8544f121d9f..189806b6e69 100644
--- a/include/linux/ftrace_event.h
+++ b/include/linux/ftrace_event.h
@@ -116,7 +116,8 @@ struct ftrace_event_call {
116 void (*unregfunc)(void *); 116 void (*unregfunc)(void *);
117 int id; 117 int id;
118 int (*raw_init)(void); 118 int (*raw_init)(void);
119 int (*show_format)(struct trace_seq *s); 119 int (*show_format)(struct ftrace_event_call *call,
120 struct trace_seq *s);
120 int (*define_fields)(void); 121 int (*define_fields)(void);
121 struct list_head fields; 122 struct list_head fields;
122 int filter_active; 123 int filter_active;
diff --git a/include/trace/ftrace.h b/include/trace/ftrace.h
index 46d81b5e861..b250b061657 100644
--- a/include/trace/ftrace.h
+++ b/include/trace/ftrace.h
@@ -151,7 +151,8 @@
151#undef TRACE_EVENT 151#undef TRACE_EVENT
152#define TRACE_EVENT(call, proto, args, tstruct, func, print) \ 152#define TRACE_EVENT(call, proto, args, tstruct, func, print) \
153static int \ 153static int \
154ftrace_format_##call(struct trace_seq *s) \ 154ftrace_format_##call(struct ftrace_event_call *unused, \
155 struct trace_seq *s) \
155{ \ 156{ \
156 struct ftrace_raw_##call field __attribute__((unused)); \ 157 struct ftrace_raw_##call field __attribute__((unused)); \
157 int ret = 0; \ 158 int ret = 0; \
diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c
index 1d289e2d669..b568ade8f45 100644
--- a/kernel/trace/trace_events.c
+++ b/kernel/trace/trace_events.c
@@ -576,7 +576,7 @@ event_format_read(struct file *filp, char __user *ubuf, size_t cnt,
576 trace_seq_printf(s, "format:\n"); 576 trace_seq_printf(s, "format:\n");
577 trace_write_header(s); 577 trace_write_header(s);
578 578
579 r = call->show_format(s); 579 r = call->show_format(call, s);
580 if (!r) { 580 if (!r) {
581 /* 581 /*
582 * ug! The format output is bigger than a PAGE!! 582 * ug! The format output is bigger than a PAGE!!
diff --git a/kernel/trace/trace_export.c b/kernel/trace/trace_export.c
index d06cf898dc8..956d4bc675e 100644
--- a/kernel/trace/trace_export.c
+++ b/kernel/trace/trace_export.c
@@ -60,7 +60,8 @@ extern void __bad_type_size(void);
60#undef TRACE_EVENT_FORMAT 60#undef TRACE_EVENT_FORMAT
61#define TRACE_EVENT_FORMAT(call, proto, args, fmt, tstruct, tpfmt) \ 61#define TRACE_EVENT_FORMAT(call, proto, args, fmt, tstruct, tpfmt) \
62static int \ 62static int \
63ftrace_format_##call(struct trace_seq *s) \ 63ftrace_format_##call(struct ftrace_event_call *unused, \
64 struct trace_seq *s) \
64{ \ 65{ \
65 struct args field; \ 66 struct args field; \
66 int ret; \ 67 int ret; \
@@ -76,7 +77,8 @@ ftrace_format_##call(struct trace_seq *s) \
76#define TRACE_EVENT_FORMAT_NOFILTER(call, proto, args, fmt, tstruct, \ 77#define TRACE_EVENT_FORMAT_NOFILTER(call, proto, args, fmt, tstruct, \
77 tpfmt) \ 78 tpfmt) \
78static int \ 79static int \
79ftrace_format_##call(struct trace_seq *s) \ 80ftrace_format_##call(struct ftrace_event_call *unused, \
81 struct trace_seq *s) \
80{ \ 82{ \
81 struct args field; \ 83 struct args field; \
82 int ret; \ 84 int ret; \