diff options
-rw-r--r-- | include/linux/ftrace_event.h | 3 | ||||
-rw-r--r-- | include/trace/ftrace.h | 3 | ||||
-rw-r--r-- | kernel/trace/trace_output.c | 15 |
3 files changed, 21 insertions, 0 deletions
diff --git a/include/linux/ftrace_event.h b/include/linux/ftrace_event.h index c0f4b364c711..c3c5aaaae53a 100644 --- a/include/linux/ftrace_event.h +++ b/include/linux/ftrace_event.h | |||
@@ -25,6 +25,9 @@ const char *ftrace_print_flags_seq(struct trace_seq *p, const char *delim, | |||
25 | const char *ftrace_print_symbols_seq(struct trace_seq *p, unsigned long val, | 25 | const char *ftrace_print_symbols_seq(struct trace_seq *p, unsigned long val, |
26 | const struct trace_print_flags *symbol_array); | 26 | const struct trace_print_flags *symbol_array); |
27 | 27 | ||
28 | const char *ftrace_print_hex_seq(struct trace_seq *p, | ||
29 | const unsigned char *buf, int len); | ||
30 | |||
28 | /* | 31 | /* |
29 | * The trace entry - the most basic unit of tracing. This is what | 32 | * The trace entry - the most basic unit of tracing. This is what |
30 | * is printed in the end as a single line in the trace output, such as: | 33 | * is printed in the end as a single line in the trace output, such as: |
diff --git a/include/trace/ftrace.h b/include/trace/ftrace.h index ea6f9d4a20e9..c48320b3dabd 100644 --- a/include/trace/ftrace.h +++ b/include/trace/ftrace.h | |||
@@ -198,6 +198,9 @@ | |||
198 | ftrace_print_symbols_seq(p, value, symbols); \ | 198 | ftrace_print_symbols_seq(p, value, symbols); \ |
199 | }) | 199 | }) |
200 | 200 | ||
201 | #undef __print_hex | ||
202 | #define __print_hex(buf, buf_len) ftrace_print_hex_seq(p, buf, buf_len) | ||
203 | |||
201 | #undef DECLARE_EVENT_CLASS | 204 | #undef DECLARE_EVENT_CLASS |
202 | #define DECLARE_EVENT_CLASS(call, proto, args, tstruct, assign, print) \ | 205 | #define DECLARE_EVENT_CLASS(call, proto, args, tstruct, assign, print) \ |
203 | static notrace enum print_line_t \ | 206 | static notrace enum print_line_t \ |
diff --git a/kernel/trace/trace_output.c b/kernel/trace/trace_output.c index 8e46b3323cdc..7c4a0ca650b5 100644 --- a/kernel/trace/trace_output.c +++ b/kernel/trace/trace_output.c | |||
@@ -355,6 +355,21 @@ ftrace_print_symbols_seq(struct trace_seq *p, unsigned long val, | |||
355 | } | 355 | } |
356 | EXPORT_SYMBOL(ftrace_print_symbols_seq); | 356 | EXPORT_SYMBOL(ftrace_print_symbols_seq); |
357 | 357 | ||
358 | const char * | ||
359 | ftrace_print_hex_seq(struct trace_seq *p, const unsigned char *buf, int buf_len) | ||
360 | { | ||
361 | int i; | ||
362 | const char *ret = p->buffer + p->len; | ||
363 | |||
364 | for (i = 0; i < buf_len; i++) | ||
365 | trace_seq_printf(p, "%s%2.2x", i == 0 ? "" : " ", buf[i]); | ||
366 | |||
367 | trace_seq_putc(p, 0); | ||
368 | |||
369 | return ret; | ||
370 | } | ||
371 | EXPORT_SYMBOL(ftrace_print_hex_seq); | ||
372 | |||
358 | #ifdef CONFIG_KRETPROBES | 373 | #ifdef CONFIG_KRETPROBES |
359 | static inline const char *kretprobed(const char *name) | 374 | static inline const char *kretprobed(const char *name) |
360 | { | 375 | { |