/* SPDX-License-Identifier: GPL-2.0 */ /* * Copyright (C) 2019-2022 Red Hat, Inc. Daniel Bristot de Oliveira <[email protected]> * * Deterministic automata (DA) monitor functions, to be used together * with automata models in C generated by the dot2k tool. * * The dot2k tool is available at tools/verification/dot2k/ * * For further information, see: * Documentation/trace/rv/da_monitor_synthesis.rst */ #include <rv/automata.h> #include <linux/rv.h> #include <linux/bug.h> #ifdef CONFIG_RV_REACTORS #define DECLARE_RV_REACTING_HELPERS(name, type) … #else /* CONFIG_RV_REACTOR */ #define DECLARE_RV_REACTING_HELPERS … #endif /* * Generic helpers for all types of deterministic automata monitors. */ #define DECLARE_DA_MON_GENERIC_HELPERS(name, type) … /* * Event handler for implicit monitors. Implicit monitor is the one which the * handler does not need to specify which da_monitor to manipulate. Examples * of implicit monitor are the per_cpu or the global ones. */ #define DECLARE_DA_MON_MODEL_HANDLER_IMPLICIT(name, type) … \ /* * Event handler for per_task monitors. */ #define DECLARE_DA_MON_MODEL_HANDLER_PER_TASK(name, type) … /* * Functions to define, init and get a global monitor. */ #define DECLARE_DA_MON_INIT_GLOBAL(name, type) … /* * Functions to define, init and get a per-cpu monitor. */ #define DECLARE_DA_MON_INIT_PER_CPU(name, type) … /* * Functions to define, init and get a per-task monitor. */ #define DECLARE_DA_MON_INIT_PER_TASK(name, type) … /* * Handle event for implicit monitor: da_get_monitor_##name() will figure out * the monitor. */ #define DECLARE_DA_MON_MONITOR_HANDLER_IMPLICIT(name, type) … /* * Handle event for per task. */ #define DECLARE_DA_MON_MONITOR_HANDLER_PER_TASK(name, type) … /* * Entry point for the global monitor. */ #define DECLARE_DA_MON_GLOBAL(name, type) … /* * Entry point for the per-cpu monitor. */ #define DECLARE_DA_MON_PER_CPU(name, type) … /* * Entry point for the per-task monitor. */ #define DECLARE_DA_MON_PER_TASK(name, type) …