diff options
author | Kevin Hilman <khilman@linaro.org> | 2015-06-29 10:37:23 -0700 |
---|---|---|
committer | Kevin Hilman <khilman@linaro.org> | 2015-06-29 10:37:23 -0700 |
commit | 590e935df0c94b2d7a4584bb26906666176a6133 (patch) | |
tree | bb004c31d277423c7eb0f6bd2c0c1e9d8428e9f2 /kernel/trace | |
parent | 774b195c03ac44c0dbc4e81a3f194779692ce3bd (diff) | |
parent | 91760bceff1f3f5860ff49c14194567f972352e6 (diff) |
Merge branch 'linux-linaro-lsk-v3.18' into linux-linaro-lsk-v3.18-rtlsk-v3.18-18.03-rtlsk-v3.18-18.02-rtlsk-v3.18-17.11-rtlsk-v3.18-17.09-rtlsk-v3.18-17.08-rtlsk-v3.18-17.05-rtlsk-v3.18-17.03-rtlsk-v3.18-16.07-rtlsk-v3.18-16.06-rtlsk-v3.18-16.05-rtlsk-v3.18-16.04-rtlsk-v3.18-16.03-rtlsk-v3.18-16.02-rtlsk-v3.18-16.01-rtlsk-v3.18-15.12-rtlsk-v3.18-15.11-rtlsk-v3.18-15.10-rtlsk-v3.18-15.09-rtlsk-v3.18-15.08-rtlsk-v3.18-15.07-rtlinux-linaro-lsk-v3.18-rt
Diffstat (limited to 'kernel/trace')
-rw-r--r-- | kernel/trace/trace_output.c | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/kernel/trace/trace_output.c b/kernel/trace/trace_output.c index d72684443868..9dcf91d62c04 100644 --- a/kernel/trace/trace_output.c +++ b/kernel/trace/trace_output.c @@ -186,6 +186,50 @@ ftrace_print_hex_seq(struct trace_seq *p, const unsigned char *buf, int buf_len) } EXPORT_SYMBOL(ftrace_print_hex_seq); +const char * +ftrace_print_array_seq(struct trace_seq *p, const void *buf, int buf_len, + size_t el_size) +{ + const char *ret = trace_seq_buffer_ptr(p); + const char *prefix = ""; + void *ptr = (void *)buf; + + trace_seq_putc(p, '{'); + + while (ptr < buf + buf_len) { + switch (el_size) { + case 1: + trace_seq_printf(p, "%s0x%x", prefix, + *(u8 *)ptr); + break; + case 2: + trace_seq_printf(p, "%s0x%x", prefix, + *(u16 *)ptr); + break; + case 4: + trace_seq_printf(p, "%s0x%x", prefix, + *(u32 *)ptr); + break; + case 8: + trace_seq_printf(p, "%s0x%llx", prefix, + *(u64 *)ptr); + break; + default: + trace_seq_printf(p, "BAD SIZE:%zu 0x%x", el_size, + *(u8 *)ptr); + el_size = 1; + } + prefix = ","; + ptr += el_size; + } + + trace_seq_putc(p, '}'); + trace_seq_putc(p, 0); + + return ret; +} +EXPORT_SYMBOL(ftrace_print_array_seq); + int ftrace_raw_output_prep(struct trace_iterator *iter, struct trace_event *trace_event) { |