mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-18 22:14:16 +00:00
tracing: Have unsigned int function args displayed as hexadecimal
Most function arguments that are passed in as unsigned int or unsigned long are better displayed as hexadecimal than normal integer. For example, the functions: static void __create_object(unsigned long ptr, size_t size, int min_count, gfp_t gfp, unsigned int objflags); static bool stack_access_ok(struct unwind_state *state, unsigned long _addr, size_t len); void __local_bh_disable_ip(unsigned long ip, unsigned int cnt); Show up in the trace as: __create_object(ptr=-131387050520576, size=4096, min_count=1, gfp=3264, objflags=0) <-kmem_cache_alloc_noprof stack_access_ok(state=0xffffc9000233fc98, _addr=-60473102566256, len=8) <-unwind_next_frame __local_bh_disable_ip(ip=-2127311112, cnt=256) <-handle_softirqs Instead, by displaying unsigned as hexadecimal, they look more like this: __create_object(ptr=0xffff8881028d2080, size=0x280, min_count=1, gfp=0x82820, objflags=0x0) <-kmem_cache_alloc_node_noprof stack_access_ok(state=0xffffc90000003938, _addr=0xffffc90000003930, len=0x8) <-unwind_next_frame __local_bh_disable_ip(ip=0xffffffff8133cef8, cnt=0x100) <-handle_softirqs Which is much easier to understand as most unsigned longs are usually just pointers. Even the "unsigned int cnt" in __local_bh_disable_ip() looks better as hexadecimal as a lot of flags are passed as unsigned. Changes since v2: https://lore.kernel.org/20250801111453.01502861@gandalf.local.home - Use btf_int_encoding() instead of open coding it (Martin KaFai Lau) Cc: Masami Hiramatsu <mhiramat@kernel.org> Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Cc: Douglas Raillard <douglas.raillard@arm.com> Cc: Martin KaFai Lau <martin.lau@linux.dev> Link: https://lore.kernel.org/20250801165601.7770d65c@gandalf.local.home Acked-by: Yonghong Song <yonghong.song@linux.dev> Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
This commit is contained in:
parent
db5f0c3e3e
commit
3ca824369b
1 changed files with 7 additions and 1 deletions
|
@ -701,6 +701,7 @@ void print_function_args(struct trace_seq *s, unsigned long *args,
|
|||
struct btf *btf;
|
||||
s32 tid, nr = 0;
|
||||
int a, p, x;
|
||||
u16 encode;
|
||||
|
||||
trace_seq_printf(s, "(");
|
||||
|
||||
|
@ -744,7 +745,12 @@ void print_function_args(struct trace_seq *s, unsigned long *args,
|
|||
trace_seq_printf(s, "0x%lx", arg);
|
||||
break;
|
||||
case BTF_KIND_INT:
|
||||
trace_seq_printf(s, "%ld", arg);
|
||||
encode = btf_int_encoding(t);
|
||||
/* Print unsigned ints as hex */
|
||||
if (encode & BTF_INT_SIGNED)
|
||||
trace_seq_printf(s, "%ld", arg);
|
||||
else
|
||||
trace_seq_printf(s, "0x%lx", arg);
|
||||
break;
|
||||
case BTF_KIND_ENUM:
|
||||
trace_seq_printf(s, "%ld", arg);
|
||||
|
|
Loading…
Add table
Reference in a new issue