mirror of
https://github.com/torvalds/linux.git
synced 2026-09-26 01:52:03 +02:00
Validate the functionality of DA monitors by injecting events in a controlled environment (KUnit) and expecting reactions. Events handlers are exported directly from the monitor source files without using system events and with dummy arguments (e.g. no real tasks). If the provided sequence of events incurs a violation, the test expects the stub version of rv_react() to be called. This testing method can validate the entire monitor implementation since it sits between the monitor and the system (in place of the tracepoints). All sorts of system and timing events can be emulated without affecting the running kernel. Handlers and monitor functions are exported as part of a struct to simplify the process of running KUnit tests from kernel modules. Reviewed-by: Nam Cao <namcao@linutronix.de> Link: https://lore.kernel.org/r/20260723074534.43521-13-gmonaco@redhat.com Signed-off-by: Gabriele Monaco <gmonaco@redhat.com>
34 lines
1.0 KiB
C
34 lines
1.0 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* Automatically generated by rvgen kunit.
|
|
* May need manual intervention for function prototypes that couldn't be
|
|
* found (e.g. are in another file) or variables to be exported.
|
|
*/
|
|
|
|
#ifndef __STS_KUNIT_H
|
|
#define __STS_KUNIT_H
|
|
|
|
#if IS_ENABLED(CONFIG_RV_MONITORS_KUNIT_TEST)
|
|
|
|
#include <linux/rv.h>
|
|
#include <rv/kunit.h>
|
|
|
|
extern const struct rv_sts_ops {
|
|
struct rv_kunit_mon mon;
|
|
#ifdef CONFIG_X86_LOCAL_APIC
|
|
void (*handle_vector_irq_entry)(void *data, int vector);
|
|
#endif
|
|
void (*handle_irq_disable)(void *data, unsigned long ip, unsigned long parent_ip);
|
|
void (*handle_irq_enable)(void *data, unsigned long ip, unsigned long parent_ip);
|
|
void (*handle_irq_entry)(void *data, int irq, struct irqaction *action);
|
|
void (*handle_sched_switch)(void *data, bool preempt,
|
|
struct task_struct *prev,
|
|
struct task_struct *next,
|
|
unsigned int prev_state);
|
|
void (*handle_schedule_entry)(void *data, bool preempt);
|
|
void (*handle_schedule_exit)(void *data, bool is_switch);
|
|
} rv_sts_ops;
|
|
#endif
|
|
|
|
#endif /* __STS_KUNIT_H */
|