Commit bc3d482d authored by Gabriele Monaco's avatar Gabriele Monaco Committed by Steven Rostedt (Google)
Browse files

rv: Simplify manual steps in monitor creation

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: default avatarGabriele Monaco <gmonaco@redhat.com>
Signed-off-by: default avatarSteven Rostedt (Google) <rostedt@goodmis.org>
parent 64b3e5f0
Loading
Loading
Loading
Loading
+2 −23
Original line number Diff line number Diff line
@@ -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"
+2 −0
Original line number Diff line number Diff line
# 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
+12 −0
Original line number Diff line number Diff line
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
+1 −1
Original line number Diff line number Diff line
@@ -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>

+15 −0
Original line number Diff line number Diff line
/* 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 */
Loading