]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
rv: Simplify manual steps in monitor creation
authorGabriele Monaco <gmonaco@redhat.com>
Fri, 27 Dec 2024 14:47:49 +0000 (15:47 +0100)
committerSteven Rostedt (Google) <rostedt@goodmis.org>
Fri, 27 Dec 2024 19:20:03 +0000 (14:20 -0500)
While creating a new monitor in RV, besides generating code from dot2k,
there are a few manual steps which can be tedious and error prone, like
adding the tracepoints, makefile lines and kconfig.

This patch restructures the existing monitors to keep some files in the
monitor's folder itself, which can be automatically generated by future
versions of dot2k.

Monitors have now their own Kconfig and tracepoint snippets. For
simplicity, the main tracepoint definition, is moved to the RV
directory, it defines only the tracepoint classes and includes the
monitor-specific tracepoints, which reside in the monitor directory.

Tracepoints and Kconfig no longer need to be copied and adapted from
existing ones but only need to be included in the main files.
The Makefile remains untouched since there's little advantage in having
a separated Makefile for each monitor with a single line and including
it in the main RV Makefile.

Cc: Juri Lelli <juri.lelli@redhat.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: John Kacur <jkacur@redhat.com>
Link: https://lore.kernel.org/20241227144752.362911-6-gmonaco@redhat.com
Signed-off-by: Gabriele Monaco <gmonaco@redhat.com>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
kernel/trace/rv/Kconfig
kernel/trace/rv/Makefile
kernel/trace/rv/monitors/wip/Kconfig [new file with mode: 0644]
kernel/trace/rv/monitors/wip/wip.c
kernel/trace/rv/monitors/wip/wip_trace.h [new file with mode: 0644]
kernel/trace/rv/monitors/wwnr/Kconfig [new file with mode: 0644]
kernel/trace/rv/monitors/wwnr/wwnr.c
kernel/trace/rv/monitors/wwnr/wwnr_trace.h [new file with mode: 0644]
kernel/trace/rv/rv.c
kernel/trace/rv/rv_trace.h [moved from include/trace/events/rv.h with 79% similarity]

index 831779607e849ff09acf5cd96a492c246e6beef0..1cca47531f0063ebe5978994204baa70b4a3686b 100644 (file)
@@ -25,30 +25,9 @@ menuconfig RV
          For further information, see:
            Documentation/trace/rv/runtime-verification.rst
 
-config RV_MON_WIP
-       depends on RV
-       depends on PREEMPT_TRACER
-       select DA_MON_EVENTS_IMPLICIT
-       bool "wip monitor"
-       help
-         Enable wip (wakeup in preemptive) sample monitor that illustrates
-         the usage of per-cpu monitors, and one limitation of the
-         preempt_disable/enable events.
-
-         For further information, see:
-           Documentation/trace/rv/monitor_wip.rst
+source "kernel/trace/rv/monitors/wip/Kconfig"
 
-config RV_MON_WWNR
-       depends on RV
-       select DA_MON_EVENTS_ID
-       bool "wwnr monitor"
-       help
-         Enable wwnr (wakeup while not running) sample monitor, this is a
-         sample monitor that illustrates the usage of per-task monitor.
-         The model is borken on purpose: it serves to test reactors.
-
-         For further information, see:
-           Documentation/trace/rv/monitor_wwnr.rst
+source "kernel/trace/rv/monitors/wwnr/Kconfig"
 
 config RV_REACTORS
        bool "Runtime verification reactors"
index 963d14875b454d007d17b664712e2f8bf07311c5..645434146a88a9035ef3118a28b4ac8f66301114 100644 (file)
@@ -1,5 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 
+ccflags-y += -I $(src)         # needed for trace events
+
 obj-$(CONFIG_RV) += rv.o
 obj-$(CONFIG_RV_MON_WIP) += monitors/wip/wip.o
 obj-$(CONFIG_RV_MON_WWNR) += monitors/wwnr/wwnr.o
diff --git a/kernel/trace/rv/monitors/wip/Kconfig b/kernel/trace/rv/monitors/wip/Kconfig
new file mode 100644 (file)
index 0000000..3ef664b
--- /dev/null
@@ -0,0 +1,12 @@
+config RV_MON_WIP
+       depends on RV
+       depends on PREEMPT_TRACER
+       select DA_MON_EVENTS_IMPLICIT
+       bool "wip monitor"
+       help
+         Enable wip (wakeup in preemptive) sample monitor that illustrates
+         the usage of per-cpu monitors, and one limitation of the
+         preempt_disable/enable events.
+
+         For further information, see:
+           Documentation/trace/rv/monitor_wip.rst
index b2b49a27e8863bd7558b886ca91cf2394946f15f..db7389157c87ef1616394cbc6b2684e4ac3cb38d 100644 (file)
@@ -10,7 +10,7 @@
 
 #define MODULE_NAME "wip"
 
-#include <trace/events/rv.h>
+#include <rv_trace.h>
 #include <trace/events/sched.h>
 #include <trace/events/preemptirq.h>
 
diff --git a/kernel/trace/rv/monitors/wip/wip_trace.h b/kernel/trace/rv/monitors/wip/wip_trace.h
new file mode 100644 (file)
index 0000000..aa2162f
--- /dev/null
@@ -0,0 +1,15 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+
+/*
+ * Snippet to be included in rv_trace.h
+ */
+
+#ifdef CONFIG_RV_MON_WIP
+DEFINE_EVENT(event_da_monitor, event_wip,
+            TP_PROTO(char *state, char *event, char *next_state, bool final_state),
+            TP_ARGS(state, event, next_state, final_state));
+
+DEFINE_EVENT(error_da_monitor, error_wip,
+            TP_PROTO(char *state, char *event),
+            TP_ARGS(state, event));
+#endif /* CONFIG_RV_MON_WIP */
diff --git a/kernel/trace/rv/monitors/wwnr/Kconfig b/kernel/trace/rv/monitors/wwnr/Kconfig
new file mode 100644 (file)
index 0000000..ee741aa
--- /dev/null
@@ -0,0 +1,11 @@
+config RV_MON_WWNR
+       depends on RV
+       select DA_MON_EVENTS_ID
+       bool "wwnr monitor"
+       help
+         Enable wwnr (wakeup while not running) sample monitor, this is a
+         sample monitor that illustrates the usage of per-task monitor.
+         The model is borken on purpose: it serves to test reactors.
+
+         For further information, see:
+           Documentation/trace/rv/monitor_wwnr.rst
index 0e43dd2db685d0ae99606e1758d7b390cf8824d8..3b16994a998450ee1db706f4f2c6f039e84b7da4 100644 (file)
@@ -10,7 +10,7 @@
 
 #define MODULE_NAME "wwnr"
 
-#include <trace/events/rv.h>
+#include <rv_trace.h>
 #include <trace/events/sched.h>
 
 #include "wwnr.h"
diff --git a/kernel/trace/rv/monitors/wwnr/wwnr_trace.h b/kernel/trace/rv/monitors/wwnr/wwnr_trace.h
new file mode 100644 (file)
index 0000000..fc97ec7
--- /dev/null
@@ -0,0 +1,16 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+
+/*
+ * Snippet to be included in rv_trace.h
+ */
+
+#ifdef CONFIG_RV_MON_WWNR
+/* id is the pid of the task */
+DEFINE_EVENT(event_da_monitor_id, event_wwnr,
+            TP_PROTO(int id, char *state, char *event, char *next_state, bool final_state),
+            TP_ARGS(id, state, event, next_state, final_state));
+
+DEFINE_EVENT(error_da_monitor_id, error_wwnr,
+            TP_PROTO(int id, char *state, char *event),
+            TP_ARGS(id, state, event));
+#endif /* CONFIG_RV_MON_WWNR */
index 279c70e1bd745d581593f98a47c49faeff855fc3..8657fc8806e7c9425ed4754feb8dc9a71b52bf7b 100644 (file)
 
 #ifdef CONFIG_DA_MON_EVENTS
 #define CREATE_TRACE_POINTS
-#include <trace/events/rv.h>
+#include <rv_trace.h>
 #endif
 
 #include "rv.h"
similarity index 79%
rename from include/trace/events/rv.h
rename to kernel/trace/rv/rv_trace.h
index 56592da9301c0c4d83157cbb1b9abd21d4dda688..3442dc59490fe646a757d98e4e6b5a521ab0473a 100644 (file)
@@ -57,15 +57,8 @@ DECLARE_EVENT_CLASS(error_da_monitor,
                __entry->state)
 );
 
-#ifdef CONFIG_RV_MON_WIP
-DEFINE_EVENT(event_da_monitor, event_wip,
-           TP_PROTO(char *state, char *event, char *next_state, bool final_state),
-           TP_ARGS(state, event, next_state, final_state));
-
-DEFINE_EVENT(error_da_monitor, error_wip,
-            TP_PROTO(char *state, char *event),
-            TP_ARGS(state, event));
-#endif /* CONFIG_RV_MON_WIP */
+#include <monitors/wip/wip_trace.h>
+
 #endif /* CONFIG_DA_MON_EVENTS_IMPLICIT */
 
 #ifdef CONFIG_DA_MON_EVENTS_ID
@@ -123,20 +116,13 @@ DECLARE_EVENT_CLASS(error_da_monitor_id,
                __entry->state)
 );
 
-#ifdef CONFIG_RV_MON_WWNR
-/* id is the pid of the task */
-DEFINE_EVENT(event_da_monitor_id, event_wwnr,
-            TP_PROTO(int id, char *state, char *event, char *next_state, bool final_state),
-            TP_ARGS(id, state, event, next_state, final_state));
-
-DEFINE_EVENT(error_da_monitor_id, error_wwnr,
-            TP_PROTO(int id, char *state, char *event),
-            TP_ARGS(id, state, event));
-#endif /* CONFIG_RV_MON_WWNR */
+#include <monitors/wwnr/wwnr_trace.h>
 
 #endif /* CONFIG_DA_MON_EVENTS_ID */
 #endif /* _TRACE_RV_H */
 
 /* This part ust be outside protection */
 #undef TRACE_INCLUDE_PATH
+#define TRACE_INCLUDE_PATH .
+#define TRACE_INCLUDE_FILE rv_trace
 #include <trace/define_trace.h>