Skip to content

Commit

Permalink
tracing: Add __print_dynamic_array() helper
Browse files Browse the repository at this point in the history
[ Upstream commit e52750f ]

When printing a dynamic array in a trace event, the method is rather ugly.
It has the format of:

  __print_array(__get_dynamic_array(array),
            __get_dynmaic_array_len(array) / el_size, el_size)

Since dynamic arrays are known to the tracing infrastructure, create a
helper macro that does the above for you.

  __print_dynamic_array(array, el_size)

Which would expand to the same output.

Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
Signed-off-by: Avadhut Naik <avadhut.naik@amd.com>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Reviewed-by: Qiuxu Zhuo <qiuxu.zhuo@intel.com>
Link: https://lore.kernel.org/r/20241022194158.110073-3-avadhut.naik@amd.com
Stable-dep-of: ea8d764 ("tracing: Verify event formats that have "%*p.."")
Signed-off-by: Sasha Levin <sashal@kernel.org>
  • Loading branch information
Steven Rostedt authored and Greg Kroah-Hartman committed May 2, 2025
1 parent e62c318 commit 0b603e7
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 1 deletion.
8 changes: 8 additions & 0 deletions include/trace/stages/stage3_trace_output.h
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,14 @@
trace_print_array_seq(p, array, count, el_size); \
})

#undef __print_dynamic_array
#define __print_dynamic_array(array, el_size) \
({ \
__print_array(__get_dynamic_array(array), \
__get_dynamic_array_len(array) / (el_size), \
(el_size)); \
})

#undef __print_hex_dump
#define __print_hex_dump(prefix_str, prefix_type, \
rowsize, groupsize, buf, len, ascii) \
Expand Down
1 change: 1 addition & 0 deletions include/trace/stages/stage7_class_define.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
#undef __get_rel_cpumask
#undef __get_rel_sockaddr
#undef __print_array
#undef __print_dynamic_array
#undef __print_hex_dump
#undef __get_buf

Expand Down
7 changes: 6 additions & 1 deletion samples/trace_events/trace-events-sample.h
Original file line number Diff line number Diff line change
Expand Up @@ -319,7 +319,7 @@ TRACE_EVENT(foo_bar,
__assign_cpumask(cpum, cpumask_bits(mask));
),

TP_printk("foo %s %d %s %s %s %s %s (%s) (%s) %s", __entry->foo, __entry->bar,
TP_printk("foo %s %d %s %s %s %s %s %s (%s) (%s) %s", __entry->foo, __entry->bar,

/*
* Notice here the use of some helper functions. This includes:
Expand Down Expand Up @@ -363,6 +363,11 @@ TRACE_EVENT(foo_bar,
__print_array(__get_dynamic_array(list),
__get_dynamic_array_len(list) / sizeof(int),
sizeof(int)),

/* A shortcut is to use __print_dynamic_array for dynamic arrays */

__print_dynamic_array(list, sizeof(int)),

__get_str(str), __get_str(lstr),
__get_bitmask(cpus), __get_cpumask(cpum),
__get_str(vstr))
Expand Down

0 comments on commit 0b603e7

Please sign in to comment.