# SPDX-License-Identifier: GPL-2.0-only
#
config RV_MON_EVENTS
	bool

config RV_MON_MAINTENANCE_EVENTS
	bool

config DA_MON_EVENTS_IMPLICIT
	select RV_MON_EVENTS
	select RV_MON_MAINTENANCE_EVENTS
	bool

config DA_MON_EVENTS_ID
	select RV_MON_EVENTS
	select RV_MON_MAINTENANCE_EVENTS
	bool

config LTL_MON_EVENTS_ID
	select RV_MON_EVENTS
	bool

config RV_LTL_MONITOR
	bool

menuconfig RV
	bool "Runtime Verification"
	select TRACING
	help
	  Enable the kernel runtime verification infrastructure. RV is a
	  lightweight (yet rigorous) method that complements classical
	  exhaustive verification techniques (such as model checking and
	  theorem proving). RV works by analyzing the trace of the system's
	  actual execution, comparing it against a formal specification of
	  the system behavior.

	  For further information, see:
	    Documentation/trace/rv/runtime-verification.rst

config RV_PER_TASK_MONITORS
	int "Maximum number of per-task monitor"
	depends on RV
	range 1 8
	default 2
	help
	  This option configures the maximum number of per-task RV monitors that can run
	  simultaneously.

source "kernel/trace/rv/monitors/wip/Kconfig"
source "kernel/trace/rv/monitors/wwnr/Kconfig"

source "kernel/trace/rv/monitors/sched/Kconfig"
source "kernel/trace/rv/monitors/sco/Kconfig"
source "kernel/trace/rv/monitors/snroc/Kconfig"
source "kernel/trace/rv/monitors/scpd/Kconfig"
source "kernel/trace/rv/monitors/snep/Kconfig"
source "kernel/trace/rv/monitors/sts/Kconfig"
source "kernel/trace/rv/monitors/nrp/Kconfig"
source "kernel/trace/rv/monitors/sssw/Kconfig"
source "kernel/trace/rv/monitors/opid/Kconfig"
# Add new sched monitors here

source "kernel/trace/rv/monitors/rtapp/Kconfig"
source "kernel/trace/rv/monitors/pagefault/Kconfig"
source "kernel/trace/rv/monitors/sleep/Kconfig"
# Add new rtapp monitors here

# Add new monitors here

config RV_REACTORS
	bool "Runtime verification reactors"
	default y
	depends on RV
	help
	  Enables the online runtime verification reactors. A runtime
	  monitor can cause a reaction to the detection of an exception
	  on the model's execution. By default, the monitors have
	  tracing reactions, printing the monitor output via tracepoints,
	  but other reactions can be added (on-demand) via this interface.

config RV_REACT_PRINTK
	bool "Printk reactor"
	depends on RV_REACTORS
	default y
	help
	  Enables the printk reactor. The printk reactor emits a printk()
	  message if an exception is found.

config RV_REACT_PANIC
	bool "Panic reactor"
	depends on RV_REACTORS
	default y
	help
	  Enables the panic reactor. The panic reactor emits a printk()
	  message if an exception is found and panic()s the system.
