xref: /linux/kernel/trace/rv/monitors/nrp/nrp.h (revision 4ff261e725d7376c12e745fdbe8a33cd6dbd5a83)
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 enum states_nrp {
9 	preempt_irq_nrp = 0,
10 	any_thread_running_nrp,
11 	nested_preempt_nrp,
12 	rescheduling_nrp,
13 	state_max_nrp
14 };
15 
16 #define INVALID_STATE state_max_nrp
17 
18 enum events_nrp {
19 	irq_entry_nrp = 0,
20 	sched_need_resched_nrp,
21 	schedule_entry_nrp,
22 	schedule_entry_preempt_nrp,
23 	event_max_nrp
24 };
25 
26 struct automaton_nrp {
27 	char *state_names[state_max_nrp];
28 	char *event_names[event_max_nrp];
29 	unsigned char function[state_max_nrp][event_max_nrp];
30 	unsigned char initial_state;
31 	bool final_states[state_max_nrp];
32 };
33 
34 static const struct automaton_nrp automaton_nrp = {
35 	.state_names = {
36 		"preempt_irq",
37 		"any_thread_running",
38 		"nested_preempt",
39 		"rescheduling"
40 	},
41 	.event_names = {
42 		"irq_entry",
43 		"sched_need_resched",
44 		"schedule_entry",
45 		"schedule_entry_preempt"
46 	},
47 	.function = {
48 		{
49 			preempt_irq_nrp,
50 			preempt_irq_nrp,
51 			nested_preempt_nrp,
52 			nested_preempt_nrp
53 		},
54 		{
55 			any_thread_running_nrp,
56 			rescheduling_nrp,
57 			any_thread_running_nrp,
58 			INVALID_STATE
59 		},
60 		{
61 			nested_preempt_nrp,
62 			preempt_irq_nrp,
63 			any_thread_running_nrp,
64 			any_thread_running_nrp
65 		},
66 		{
67 			preempt_irq_nrp,
68 			rescheduling_nrp,
69 			any_thread_running_nrp,
70 			any_thread_running_nrp
71 		},
72 	},
73 	.initial_state = preempt_irq_nrp,
74 	.final_states = { 0, 1, 0, 0 },
75 };
76