xref: /linux/kernel/trace/rv/monitors/snep/snep.h (revision 88221ac0d560700b50493aedc768f728aa585141)
1*fbe6c09bSGabriele Monaco /* SPDX-License-Identifier: GPL-2.0 */
2*fbe6c09bSGabriele Monaco /*
3*fbe6c09bSGabriele Monaco  * Automatically generated C representation of snep automaton
4*fbe6c09bSGabriele Monaco  * For further information about this format, see kernel documentation:
5*fbe6c09bSGabriele Monaco  *   Documentation/trace/rv/deterministic_automata.rst
6*fbe6c09bSGabriele Monaco  */
7*fbe6c09bSGabriele Monaco 
8*fbe6c09bSGabriele Monaco enum states_snep {
9*fbe6c09bSGabriele Monaco 	non_scheduling_context_snep = 0,
10*fbe6c09bSGabriele Monaco 	scheduling_contex_snep,
11*fbe6c09bSGabriele Monaco 	state_max_snep
12*fbe6c09bSGabriele Monaco };
13*fbe6c09bSGabriele Monaco 
14*fbe6c09bSGabriele Monaco #define INVALID_STATE state_max_snep
15*fbe6c09bSGabriele Monaco 
16*fbe6c09bSGabriele Monaco enum events_snep {
17*fbe6c09bSGabriele Monaco 	preempt_disable_snep = 0,
18*fbe6c09bSGabriele Monaco 	preempt_enable_snep,
19*fbe6c09bSGabriele Monaco 	schedule_entry_snep,
20*fbe6c09bSGabriele Monaco 	schedule_exit_snep,
21*fbe6c09bSGabriele Monaco 	event_max_snep
22*fbe6c09bSGabriele Monaco };
23*fbe6c09bSGabriele Monaco 
24*fbe6c09bSGabriele Monaco struct automaton_snep {
25*fbe6c09bSGabriele Monaco 	char *state_names[state_max_snep];
26*fbe6c09bSGabriele Monaco 	char *event_names[event_max_snep];
27*fbe6c09bSGabriele Monaco 	unsigned char function[state_max_snep][event_max_snep];
28*fbe6c09bSGabriele Monaco 	unsigned char initial_state;
29*fbe6c09bSGabriele Monaco 	bool final_states[state_max_snep];
30*fbe6c09bSGabriele Monaco };
31*fbe6c09bSGabriele Monaco 
32*fbe6c09bSGabriele Monaco static const struct automaton_snep automaton_snep = {
33*fbe6c09bSGabriele Monaco 	.state_names = {
34*fbe6c09bSGabriele Monaco 		"non_scheduling_context",
35*fbe6c09bSGabriele Monaco 		"scheduling_contex"
36*fbe6c09bSGabriele Monaco 	},
37*fbe6c09bSGabriele Monaco 	.event_names = {
38*fbe6c09bSGabriele Monaco 		"preempt_disable",
39*fbe6c09bSGabriele Monaco 		"preempt_enable",
40*fbe6c09bSGabriele Monaco 		"schedule_entry",
41*fbe6c09bSGabriele Monaco 		"schedule_exit"
42*fbe6c09bSGabriele Monaco 	},
43*fbe6c09bSGabriele Monaco 	.function = {
44*fbe6c09bSGabriele Monaco 		{ non_scheduling_context_snep, non_scheduling_context_snep, scheduling_contex_snep,               INVALID_STATE },
45*fbe6c09bSGabriele Monaco 		{               INVALID_STATE,               INVALID_STATE,          INVALID_STATE, non_scheduling_context_snep },
46*fbe6c09bSGabriele Monaco 	},
47*fbe6c09bSGabriele Monaco 	.initial_state = non_scheduling_context_snep,
48*fbe6c09bSGabriele Monaco 	.final_states = { 1, 0 },
49*fbe6c09bSGabriele Monaco };
50