xref: /linux/kernel/trace/rv/monitors/nrp/nrp.h (revision c17ee635fd3a482b2ad2bf5e269755c2eae5f25e)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * Automatically generated C representation of nrp automaton
4  * For further information about this format, see kernel documentation:
5  *   Documentation/trace/rv/deterministic_automata.rst
6  */
7 
8 #define MONITOR_NAME nrp
9 
10 enum states_nrp {
11 	preempt_irq_nrp,
12 	any_thread_running_nrp,
13 	nested_preempt_nrp,
14 	rescheduling_nrp,
15 	state_max_nrp,
16 };
17 
18 #define INVALID_STATE state_max_nrp
19 
20 enum events_nrp {
21 	irq_entry_nrp,
22 	sched_need_resched_nrp,
23 	schedule_entry_nrp,
24 	schedule_entry_preempt_nrp,
25 	event_max_nrp,
26 };
27 
28 struct automaton_nrp {
29 	char *state_names[state_max_nrp];
30 	char *event_names[event_max_nrp];
31 	unsigned char function[state_max_nrp][event_max_nrp];
32 	unsigned char initial_state;
33 	bool final_states[state_max_nrp];
34 };
35 
36 static const struct automaton_nrp automaton_nrp = {
37 	.state_names = {
38 		"preempt_irq",
39 		"any_thread_running",
40 		"nested_preempt",
41 		"rescheduling",
42 	},
43 	.event_names = {
44 		"irq_entry",
45 		"sched_need_resched",
46 		"schedule_entry",
47 		"schedule_entry_preempt",
48 	},
49 	.function = {
50 		{
51 			preempt_irq_nrp,
52 			preempt_irq_nrp,
53 			nested_preempt_nrp,
54 			nested_preempt_nrp,
55 		},
56 		{
57 			any_thread_running_nrp,
58 			rescheduling_nrp,
59 			any_thread_running_nrp,
60 			INVALID_STATE,
61 		},
62 		{
63 			nested_preempt_nrp,
64 			preempt_irq_nrp,
65 			any_thread_running_nrp,
66 			any_thread_running_nrp,
67 		},
68 		{
69 			preempt_irq_nrp,
70 			rescheduling_nrp,
71 			any_thread_running_nrp,
72 			any_thread_running_nrp,
73 		},
74 	},
75 	.initial_state = preempt_irq_nrp,
76 	.final_states = { 0, 1, 0, 0 },
77 };
78