Messages in this thread | | | Date | Mon, 05 Aug 2013 16:27:42 +0900 | From | Masami Hiramatsu <> | Subject | Re: Re: [PATCH 13/13] tracing/probes: Fix basic print type functions |
| |
(2013/08/05 15:31), Joe Perches wrote: > On Mon, 2013-08-05 at 15:22 +0900, Masami Hiramatsu wrote: >> (2013/07/31 18:03), Namhyung Kim wrote: >>> From: Namhyung Kim <namhyung.kim@lge.com> >>> >>> 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. > [] >>> diff --git a/kernel/trace/trace_probe.c b/kernel/trace/trace_probe.c > [] >>> @@ -45,14 +45,19 @@ __kprobes int PRINT_TYPE_FUNC_NAME(type)(struct trace_seq *s, \ > [] >>> +DEFINE_BASIC_PRINT_TYPE_FUNC(s8, "%d", signed char) > > If there's a need to identify signed char, why > not signed short, signed int and signd long too?
Actually, since the types smaller than int are automatically up-casted to (signed/unsigned) int, those do not require the cast. However, u64/s64 requires those cast, because there are two different definitions (see include/asm/int-l[l]64.h).
BTW, I think we should have a common definition of the printk format for each integer types too.
Thank you,
-- Masami HIRAMATSU IT Management Research Dept. Linux Technology Center Hitachi, Ltd., Yokohama Research Laboratory E-mail: masami.hiramatsu.pt@hitachi.com
| |