diff options
author | Frederic Weisbecker <fweisbec@gmail.com> | 2009-08-11 11:42:52 -0400 |
---|---|---|
committer | Frederic Weisbecker <fweisbec@gmail.com> | 2009-08-11 14:35:29 -0400 |
commit | e8f9f4d79a677f55c8ec3acbe87b33a87e2df0de (patch) | |
tree | 3b20dcf2c7b49fe23e0641805ca7aaac921bc46d | |
parent | 0ac676fb50f5f8a22e5e80afc40bf38e31b77c00 (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.h | 3 | ||||
-rw-r--r-- | include/trace/ftrace.h | 3 | ||||
-rw-r--r-- | kernel/trace/trace_events.c | 2 | ||||
-rw-r--r-- | kernel/trace/trace_export.c | 6 |
4 files changed, 9 insertions, 5 deletions
diff --git a/include/linux/ftrace_event.h b/include/linux/ftrace_event.h index 8544f121d9f1..189806b6e69e 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 46d81b5e8610..b250b0616571 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) \ |
153 | static int \ | 153 | static int \ |
154 | ftrace_format_##call(struct trace_seq *s) \ | 154 | ftrace_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 1d289e2d6693..b568ade8f453 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 d06cf898dc86..956d4bc675e5 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) \ |
62 | static int \ | 62 | static int \ |
63 | ftrace_format_##call(struct trace_seq *s) \ | 63 | ftrace_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) \ |
78 | static int \ | 79 | static int \ |
79 | ftrace_format_##call(struct trace_seq *s) \ | 80 | ftrace_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; \ |