[PATCH v1 3/4] tracing/remotes: Add REMOTE_EVENT_CUSTOM_PRINTK() helper
Fuad Tabba
tabba at google.com
Sun Jun 14 07:46:00 PDT 2026
On Fri, 12 Jun 2026 at 15:22, Vincent Donnefort <vdonnefort at google.com> wrote:
>
> The current REMOTE_EVENT() takes as a __printk argument a string format
> and a list of arguments, such as RE_STRUCT("foo=%d bar=%d", foo, bar).
> Add a REMOTE_EVENT_CUSTOM_PRINTK() where the __printk argument can be a
> function. This intends to support the creation of a "printk" event for
> the arm64 nVHE/pKVM hypervisor with a dynamic prototype and by extension
> a dynamic print format.
>
> Signed-off-by: Vincent Donnefort <vdonnefort at google.com>
Reviewed-by: Fuad Tabba <tabba at google.com>
Tested-by: Fuad Tabba <tabba at google.com>
Cheers,
/fuad
>
> diff --git a/include/trace/define_remote_events.h b/include/trace/define_remote_events.h
> index 676e803dc144..4f4d58e37b84 100644
> --- a/include/trace/define_remote_events.h
> +++ b/include/trace/define_remote_events.h
> @@ -35,17 +35,26 @@ do { \
>
> #define RE_PRINTK(__args...) __args
>
> -#define REMOTE_EVENT(__name, __id, __struct, __printk) \
> - REMOTE_EVENT_FORMAT(__name, __struct); \
> +#define REMOTE_EVENT_PRINT_FUNC(__name, __printk) \
> static void remote_event_print_##__name(void *evt, struct trace_seq *seq) \
> { \
> struct remote_event_format_##__name __maybe_unused *__entry = evt; \
> trace_seq_puts(seq, #__name); \
> - remote_printk(__printk); \
> + __printk; \
> }
> +
> +#define REMOTE_EVENT(__name, __id, __struct, __printk) \
> + REMOTE_EVENT_FORMAT(__name, __struct); \
> + REMOTE_EVENT_PRINT_FUNC(__name, remote_printk(__printk))
> +
> +#define REMOTE_EVENT_CUSTOM_PRINTK(__name, __id, __struct, __printk) \
> + REMOTE_EVENT_FORMAT(__name, __struct); \
> + REMOTE_EVENT_PRINT_FUNC(__name, __printk)
> +
> #include REMOTE_EVENT_INCLUDE(REMOTE_EVENT_INCLUDE_FILE)
>
> #undef REMOTE_EVENT
> +#undef REMOTE_EVENT_CUSTOM_PRINTK
> #undef RE_PRINTK
> #undef re_field
> #define re_field(__type, __field) \
> @@ -70,4 +79,8 @@ do { \
> .print_fmt = remote_event_print_fmt_##__name, \
> .print = remote_event_print_##__name, \
> }
> +
> +#define REMOTE_EVENT_CUSTOM_PRINTK(__name, __id, __struct, __printk) \
> + REMOTE_EVENT(__name, __id, RE_STRUCT(__struct), "Unknown")
> +
> #include REMOTE_EVENT_INCLUDE(REMOTE_EVENT_INCLUDE_FILE)
> --
> 2.54.0.1136.gdb2ca164c4-goog
>
More information about the linux-arm-kernel
mailing list