diff options
author | Steven Rostedt <srostedt@redhat.com> | 2009-05-26 14:25:22 -0400 |
---|---|---|
committer | Frederic Weisbecker <fweisbec@gmail.com> | 2009-05-26 14:25:22 -0400 |
commit | be74b73a57645cc253d881ab0c1014eb64b9cf22 (patch) | |
tree | 83f14ae9a43fe98a1363d30d20d60245e1115382 /include/linux | |
parent | 0e907c99391362385c8e3af2c43b904dd1fd5d73 (diff) |
tracing: add __print_flags for events
Developers have been asking for the ability in the ftrace event tracer
to display names of bits in a flags variable.
Instead of printing out c2, it would be easier to read FOO|BAR|GOO,
assuming that FOO is bit 1, BAR is bit 6 and GOO is bit 7.
Some examples where this would be useful are the state flags in a context
switch, kmalloc flags, and even permision flags in accessing files.
[
v2 changes include:
Frederic Weisbecker's idea of using a mask instead of bits,
thus we can output GFP_KERNEL instead of GPF_WAIT|GFP_IO|GFP_FS.
Li Zefan's idea of allowing the caller of __print_flags to add their
own delimiter (or no delimiter) where we can get for file permissions
rwx instead of r|w|x.
]
[
v3 changes:
Christoph Hellwig's idea of using an array instead of va_args.
]
[ Impact: better displaying of flags in trace output ]
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/ftrace_event.h | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/include/linux/ftrace_event.h b/include/linux/ftrace_event.h index bae51ddfabd3..4b58cf1a11c2 100644 --- a/include/linux/ftrace_event.h +++ b/include/linux/ftrace_event.h | |||
@@ -3,12 +3,23 @@ | |||
3 | 3 | ||
4 | #include <linux/trace_seq.h> | 4 | #include <linux/trace_seq.h> |
5 | #include <linux/ring_buffer.h> | 5 | #include <linux/ring_buffer.h> |
6 | 6 | #include <linux/percpu.h> | |
7 | 7 | ||
8 | struct trace_array; | 8 | struct trace_array; |
9 | struct tracer; | 9 | struct tracer; |
10 | struct dentry; | 10 | struct dentry; |
11 | 11 | ||
12 | DECLARE_PER_CPU(struct trace_seq, ftrace_event_seq); | ||
13 | |||
14 | struct trace_print_flags { | ||
15 | unsigned long mask; | ||
16 | const char *name; | ||
17 | }; | ||
18 | |||
19 | const char *ftrace_print_flags_seq(struct trace_seq *p, const char *delim, | ||
20 | unsigned long flags, | ||
21 | const struct trace_print_flags *flag_array); | ||
22 | |||
12 | /* | 23 | /* |
13 | * The trace entry - the most basic unit of tracing. This is what | 24 | * The trace entry - the most basic unit of tracing. This is what |
14 | * is printed in the end as a single line in the trace output, such as: | 25 | * is printed in the end as a single line in the trace output, such as: |