diff options
author | Steven Rostedt <srostedt@redhat.com> | 2010-11-12 22:32:11 -0500 |
---|---|---|
committer | Steven Rostedt <rostedt@goodmis.org> | 2010-11-19 10:18:47 -0500 |
commit | 042957801626465492b9428860de39a3cb2a8219 (patch) | |
tree | b0997862babd5e474c500b1b4c522f3a03842106 /include/linux/ftrace_event.h | |
parent | 45677454dd6d128608117abe7dcd2bdfdd7cdf72 (diff) | |
download | op-kernel-dev-042957801626465492b9428860de39a3cb2a8219.zip op-kernel-dev-042957801626465492b9428860de39a3cb2a8219.tar.gz |
tracing/events: Show real number in array fields
Currently we have in something like the sched_switch event:
field:char prev_comm[TASK_COMM_LEN]; offset:12; size:16; signed:1;
When a userspace tool such as perf tries to parse this, the
TASK_COMM_LEN is meaningless. This is done because the TRACE_EVENT() macro
simply uses a #len to show the string of the length. When the length is
an enum, we get a string that means nothing for tools.
By adding a static buffer and a mutex to protect it, we can store the
string into that buffer with snprintf and show the actual number.
Now we get:
field:char prev_comm[16]; offset:12; size:16; signed:1;
Something much more useful.
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Diffstat (limited to 'include/linux/ftrace_event.h')
-rw-r--r-- | include/linux/ftrace_event.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/include/linux/ftrace_event.h b/include/linux/ftrace_event.h index 725bf6b..47e3997 100644 --- a/include/linux/ftrace_event.h +++ b/include/linux/ftrace_event.h @@ -225,6 +225,10 @@ enum { FILTER_PTR_STRING, }; +#define EVENT_STORAGE_SIZE 128 +extern struct mutex event_storage_mutex; +extern char event_storage[EVENT_STORAGE_SIZE]; + extern int trace_event_raw_init(struct ftrace_event_call *call); extern int trace_define_field(struct ftrace_event_call *call, const char *type, const char *name, int offset, int size, |