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:
Steven Rostedt
2009-05-20 19:21:47 -04:00
commit de Frederic Weisbecker
commit 0f4fc29dd6
3 arquivos alterados com 36 adições e 0 exclusões

Ver arquivo

@@ -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)
{