Commit | Line | Data |
---|---|---|
102227b9 DBO |
1 | /* SPDX-License-Identifier: GPL-2.0 */ |
2 | /* | |
3 | * Runtime Verification. | |
4 | * | |
5 | * For futher information, see: kernel/trace/rv/rv.c. | |
6 | */ | |
7 | #ifndef _LINUX_RV_H | |
8 | #define _LINUX_RV_H | |
9 | ||
79257534 DBO |
10 | #define MAX_DA_NAME_LEN 24 |
11 | ||
102227b9 | 12 | #ifdef CONFIG_RV |
79257534 DBO |
13 | /* |
14 | * Deterministic automaton per-object variables. | |
15 | */ | |
16 | struct da_monitor { | |
17 | bool monitoring; | |
18 | unsigned int curr_state; | |
19 | }; | |
102227b9 DBO |
20 | |
21 | /* | |
22 | * Per-task RV monitors count. Nowadays fixed in RV_PER_TASK_MONITORS. | |
23 | * If we find justification for more monitors, we can think about | |
24 | * adding more or developing a dynamic method. So far, none of | |
25 | * these are justified. | |
26 | */ | |
27 | #define RV_PER_TASK_MONITORS 1 | |
28 | #define RV_PER_TASK_MONITOR_INIT (RV_PER_TASK_MONITORS) | |
29 | ||
30 | /* | |
31 | * Futher monitor types are expected, so make this a union. | |
32 | */ | |
33 | union rv_task_monitor { | |
79257534 | 34 | struct da_monitor da_mon; |
102227b9 DBO |
35 | }; |
36 | ||
04acadcb DBO |
37 | #ifdef CONFIG_RV_REACTORS |
38 | struct rv_reactor { | |
39 | const char *name; | |
40 | const char *description; | |
41 | void (*react)(char *msg); | |
42 | }; | |
43 | #endif | |
44 | ||
102227b9 DBO |
45 | struct rv_monitor { |
46 | const char *name; | |
47 | const char *description; | |
48 | bool enabled; | |
49 | int (*enable)(void); | |
50 | void (*disable)(void); | |
51 | void (*reset)(void); | |
04acadcb DBO |
52 | #ifdef CONFIG_RV_REACTORS |
53 | void (*react)(char *msg); | |
54 | #endif | |
102227b9 DBO |
55 | }; |
56 | ||
57 | bool rv_monitoring_on(void); | |
58 | int rv_unregister_monitor(struct rv_monitor *monitor); | |
59 | int rv_register_monitor(struct rv_monitor *monitor); | |
60 | int rv_get_task_monitor_slot(void); | |
61 | void rv_put_task_monitor_slot(int slot); | |
62 | ||
04acadcb DBO |
63 | #ifdef CONFIG_RV_REACTORS |
64 | bool rv_reacting_on(void); | |
65 | int rv_unregister_reactor(struct rv_reactor *reactor); | |
66 | int rv_register_reactor(struct rv_reactor *reactor); | |
67 | #endif /* CONFIG_RV_REACTORS */ | |
68 | ||
102227b9 DBO |
69 | #endif /* CONFIG_RV */ |
70 | #endif /* _LINUX_RV_H */ |