]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
rv: Refactor da_monitor to minimise macros
authorGabriele Monaco <gmonaco@redhat.com>
Wed, 26 Nov 2025 10:42:32 +0000 (11:42 +0100)
committerGabriele Monaco <gmonaco@redhat.com>
Mon, 12 Jan 2026 06:43:49 +0000 (07:43 +0100)
commit30984ccf31b7f0678fad05a22e06bb9f6014c1ce
tree18aba854f96a321181a4c0d87f01d635433ebde3
parent0f61b1860cc3f52aef9036d7235ed1f017632193
rv: Refactor da_monitor to minimise macros

The da_monitor helper functions are generated from macros of the type:

DECLARE_DA_FUNCTION(name, type) \
static void da_func_x_##name(type arg) {} \
static void da_func_y_##name(type arg) {} \

This is good to minimise code duplication but the long macros made of
skipped end of lines is rather hard to parse. Since functions are
static, the advantage of naming them differently for each monitor is
minimal.

Refactor the da_monitor.h file to minimise macros, instead of declaring
functions from macros, we simply declare them with the same name for all
monitors (e.g. da_func_x) and for any remaining reference to the monitor
name (e.g. tracepoints, enums, global variables) we use the CONCATENATE
macro.
In this way the file is much easier to maintain while keeping the same
generality.
Functions depending on the monitor types are now conditionally compiled
according to the value of RV_MON_TYPE, which must be defined in the
monitor source.
The monitor type can be specified as in the original implementation,
although it's best to keep the default implementation (unsigned char) as
not all parts of code support larger data types, and likely there's no
need.

We keep the empty macro definitions to ease review of this change with
diff tools, but cleanup is required.

Also adapt existing monitors to keep the build working.

Reviewed-by: Nam Cao <namcao@linutronix.de>
Link: https://lore.kernel.org/r/20251126104241.291258-2-gmonaco@redhat.com
Signed-off-by: Gabriele Monaco <gmonaco@redhat.com>
23 files changed:
include/linux/rv.h
include/rv/automata.h
include/rv/da_monitor.h
kernel/trace/rv/monitors/nrp/nrp.c
kernel/trace/rv/monitors/nrp/nrp.h
kernel/trace/rv/monitors/opid/opid.c
kernel/trace/rv/monitors/opid/opid.h
kernel/trace/rv/monitors/sco/sco.c
kernel/trace/rv/monitors/sco/sco.h
kernel/trace/rv/monitors/scpd/scpd.c
kernel/trace/rv/monitors/scpd/scpd.h
kernel/trace/rv/monitors/snep/snep.c
kernel/trace/rv/monitors/snep/snep.h
kernel/trace/rv/monitors/snroc/snroc.c
kernel/trace/rv/monitors/snroc/snroc.h
kernel/trace/rv/monitors/sssw/sssw.c
kernel/trace/rv/monitors/sssw/sssw.h
kernel/trace/rv/monitors/sts/sts.c
kernel/trace/rv/monitors/sts/sts.h
kernel/trace/rv/monitors/wip/wip.c
kernel/trace/rv/monitors/wip/wip.h
kernel/trace/rv/monitors/wwnr/wwnr.c
kernel/trace/rv/monitors/wwnr/wwnr.h