tracing: add __print_symbolic to trace events
This patch adds __print_symbolic which is similar to __print_flags but works for an enumeration type instead. That is, there is only a one to one mapping between the values and the symbols. When a match is made, then it is printed, otherwise the hex value is outputed. [ Impact: add interface for showing symbol names in events ] Signed-off-by: Steven Rostedt <rostedt@goodmis.org> Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Esse commit está contido em:

commit de
Frederic Weisbecker

pai
62ba180e80
commit
0f4fc29dd6
@@ -251,6 +251,31 @@ ftrace_print_flags_seq(struct trace_seq *p, const char *delim,
|
||||
return p->buffer;
|
||||
}
|
||||
|
||||
const char *
|
||||
ftrace_print_symbols_seq(struct trace_seq *p, unsigned long val,
|
||||
const struct trace_print_flags *symbol_array)
|
||||
{
|
||||
int i;
|
||||
|
||||
trace_seq_init(p);
|
||||
|
||||
for (i = 0; symbol_array[i].name; i++) {
|
||||
|
||||
if (val != symbol_array[i].mask)
|
||||
continue;
|
||||
|
||||
trace_seq_puts(p, symbol_array[i].name);
|
||||
break;
|
||||
}
|
||||
|
||||
if (!p->len)
|
||||
trace_seq_printf(p, "0x%lx", val);
|
||||
|
||||
trace_seq_putc(p, 0);
|
||||
|
||||
return p->buffer;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_KRETPROBES
|
||||
static inline const char *kretprobed(const char *name)
|
||||
{
|
||||
|
Referência em uma nova issue
Block a user