tracing: Add __print_dynamic_array() helper

JIRA: https://issues.redhat.com/browse/RHEL-52657
Tested: by AMD
Conflicts: trace headers aren't split in different stages like upstream; trace-events-sample is behind on the tests so the number of arguments is lower

commit e52750fb1458ae9ea5860a08ed7a149185bc5b97
Author: Steven Rostedt <rostedt@goodmis.org>
Date:   Tue Oct 22 19:36:28 2024 +0000

    tracing: Add __print_dynamic_array() helper

    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

Signed-off-by: Aristeu Rozanski <arozansk@redhat.com>
This commit is contained in:
Aristeu Rozanski 2024-11-25 10:35:40 -05:00
parent ecfe57690d
commit b7c6631b3d
2 changed files with 15 additions and 1 deletions

View File

@ -428,6 +428,14 @@ TRACE_MAKE_SYSTEM_STR();
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) \
@ -966,6 +974,7 @@ static inline void ftrace_test_probe_##call(void) \
#undef __get_rel_bitmask
#undef __get_rel_sockaddr
#undef __print_array
#undef __print_dynamic_array
#undef __print_hex_dump
#undef __get_buf

View File

@ -277,7 +277,7 @@ TRACE_EVENT(foo_bar,
__assign_bitmask(cpus, cpumask_bits(mask), num_possible_cpus());
),
TP_printk("foo %s %d %s %s %s %s (%s)", __entry->foo, __entry->bar,
TP_printk("foo %s %d %s %s %s %s %s (%s)", __entry->foo, __entry->bar,
/*
* Notice here the use of some helper functions. This includes:
@ -321,6 +321,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_bitmask(cpus))
);