diff options
author | Namhyung Kim <namhyung.kim@lge.com> | 2013-07-31 04:21:01 -0400 |
---|---|---|
committer | Steven Rostedt <rostedt@goodmis.org> | 2014-01-02 16:17:24 -0500 |
commit | 50eb2672ce13d73e96f6cee84e78cfb52513ff48 (patch) | |
tree | 2c1c2ab3adb533566e2181a0c4423250e0b2e0fd | |
parent | 306cfe2025adcba10fb883ad0c540f5541d1b086 (diff) |
tracing/probes: Fix basic print type functions
The print format of s32 type was "ld" and it's casted to "long". So
it turned out to print 4294967295 for "-1" on 64-bit systems. Not
sure whether it worked well on 32-bit systems.
Anyway, it doesn't need to have cast argument at all since it already
casted using type pointer - just get rid of it. Thanks to Oleg for
pointing that out.
And print 0x prefix for unsigned type as it shows hex numbers.
Suggested-by: Oleg Nesterov <oleg@redhat.com>
Acked-by: Oleg Nesterov <oleg@redhat.com>
Acked-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
Cc: zhangwei(Jovi) <jovi.zhangwei@huawei.com>
Cc: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
-rw-r--r-- | kernel/trace/trace_probe.c | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/kernel/trace/trace_probe.c b/kernel/trace/trace_probe.c index 412e959709b4..430505b08a6f 100644 --- a/kernel/trace/trace_probe.c +++ b/kernel/trace/trace_probe.c | |||
@@ -40,23 +40,23 @@ const char *reserved_field_names[] = { | |||
40 | #define PRINT_TYPE_FMT_NAME(type) print_type_format_##type | 40 | #define PRINT_TYPE_FMT_NAME(type) print_type_format_##type |
41 | 41 | ||
42 | /* Printing in basic type function template */ | 42 | /* Printing in basic type function template */ |
43 | #define DEFINE_BASIC_PRINT_TYPE_FUNC(type, fmt, cast) \ | 43 | #define DEFINE_BASIC_PRINT_TYPE_FUNC(type, fmt) \ |
44 | static __kprobes int PRINT_TYPE_FUNC_NAME(type)(struct trace_seq *s, \ | 44 | static __kprobes int PRINT_TYPE_FUNC_NAME(type)(struct trace_seq *s, \ |
45 | const char *name, \ | 45 | const char *name, \ |
46 | void *data, void *ent)\ | 46 | void *data, void *ent) \ |
47 | { \ | 47 | { \ |
48 | return trace_seq_printf(s, " %s=" fmt, name, (cast)*(type *)data);\ | 48 | return trace_seq_printf(s, " %s=" fmt, name, *(type *)data); \ |
49 | } \ | 49 | } \ |
50 | static const char PRINT_TYPE_FMT_NAME(type)[] = fmt; | 50 | static const char PRINT_TYPE_FMT_NAME(type)[] = fmt; |
51 | 51 | ||
52 | DEFINE_BASIC_PRINT_TYPE_FUNC(u8, "%x", unsigned int) | 52 | DEFINE_BASIC_PRINT_TYPE_FUNC(u8 , "0x%x") |
53 | DEFINE_BASIC_PRINT_TYPE_FUNC(u16, "%x", unsigned int) | 53 | DEFINE_BASIC_PRINT_TYPE_FUNC(u16, "0x%x") |
54 | DEFINE_BASIC_PRINT_TYPE_FUNC(u32, "%lx", unsigned long) | 54 | DEFINE_BASIC_PRINT_TYPE_FUNC(u32, "0x%x") |
55 | DEFINE_BASIC_PRINT_TYPE_FUNC(u64, "%llx", unsigned long long) | 55 | DEFINE_BASIC_PRINT_TYPE_FUNC(u64, "0x%Lx") |
56 | DEFINE_BASIC_PRINT_TYPE_FUNC(s8, "%d", int) | 56 | DEFINE_BASIC_PRINT_TYPE_FUNC(s8, "%d") |
57 | DEFINE_BASIC_PRINT_TYPE_FUNC(s16, "%d", int) | 57 | DEFINE_BASIC_PRINT_TYPE_FUNC(s16, "%d") |
58 | DEFINE_BASIC_PRINT_TYPE_FUNC(s32, "%ld", long) | 58 | DEFINE_BASIC_PRINT_TYPE_FUNC(s32, "%d") |
59 | DEFINE_BASIC_PRINT_TYPE_FUNC(s64, "%lld", long long) | 59 | DEFINE_BASIC_PRINT_TYPE_FUNC(s64, "%Ld") |
60 | 60 | ||
61 | static inline void *get_rloc_data(u32 *dl) | 61 | static inline void *get_rloc_data(u32 *dl) |
62 | { | 62 | { |