xref: /linux/kernel/trace/rv/monitors/scpd/scpd.h (revision 88221ac0d560700b50493aedc768f728aa585141)
1*fbe6c09bSGabriele Monaco /* SPDX-License-Identifier: GPL-2.0 */
2*fbe6c09bSGabriele Monaco /*
3*fbe6c09bSGabriele Monaco  * Automatically generated C representation of scpd 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_scpd {
9*fbe6c09bSGabriele Monaco 	cant_sched_scpd = 0,
10*fbe6c09bSGabriele Monaco 	can_sched_scpd,
11*fbe6c09bSGabriele Monaco 	state_max_scpd
12*fbe6c09bSGabriele Monaco };
13*fbe6c09bSGabriele Monaco 
14*fbe6c09bSGabriele Monaco #define INVALID_STATE state_max_scpd
15*fbe6c09bSGabriele Monaco 
16*fbe6c09bSGabriele Monaco enum events_scpd {
17*fbe6c09bSGabriele Monaco 	preempt_disable_scpd = 0,
18*fbe6c09bSGabriele Monaco 	preempt_enable_scpd,
19*fbe6c09bSGabriele Monaco 	schedule_entry_scpd,
20*fbe6c09bSGabriele Monaco 	schedule_exit_scpd,
21*fbe6c09bSGabriele Monaco 	event_max_scpd
22*fbe6c09bSGabriele Monaco };
23*fbe6c09bSGabriele Monaco 
24*fbe6c09bSGabriele Monaco struct automaton_scpd {
25*fbe6c09bSGabriele Monaco 	char *state_names[state_max_scpd];
26*fbe6c09bSGabriele Monaco 	char *event_names[event_max_scpd];
27*fbe6c09bSGabriele Monaco 	unsigned char function[state_max_scpd][event_max_scpd];
28*fbe6c09bSGabriele Monaco 	unsigned char initial_state;
29*fbe6c09bSGabriele Monaco 	bool final_states[state_max_scpd];
30*fbe6c09bSGabriele Monaco };
31*fbe6c09bSGabriele Monaco 
32*fbe6c09bSGabriele Monaco static const struct automaton_scpd automaton_scpd = {
33*fbe6c09bSGabriele Monaco 	.state_names = {
34*fbe6c09bSGabriele Monaco 		"cant_sched",
35*fbe6c09bSGabriele Monaco 		"can_sched"
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 		{     can_sched_scpd,     INVALID_STATE,     INVALID_STATE,     INVALID_STATE },
45*fbe6c09bSGabriele Monaco 		{     INVALID_STATE,    cant_sched_scpd,     can_sched_scpd,     can_sched_scpd },
46*fbe6c09bSGabriele Monaco 	},
47*fbe6c09bSGabriele Monaco 	.initial_state = cant_sched_scpd,
48*fbe6c09bSGabriele Monaco 	.final_states = { 1, 0 },
49*fbe6c09bSGabriele Monaco };
50