xref: /linux/kernel/trace/rv/monitors/tss/tss.h (revision 88221ac0d560700b50493aedc768f728aa585141)
1*9fd420abSGabriele Monaco /* SPDX-License-Identifier: GPL-2.0 */
2*9fd420abSGabriele Monaco /*
3*9fd420abSGabriele Monaco  * Automatically generated C representation of tss automaton
4*9fd420abSGabriele Monaco  * For further information about this format, see kernel documentation:
5*9fd420abSGabriele Monaco  *   Documentation/trace/rv/deterministic_automata.rst
6*9fd420abSGabriele Monaco  */
7*9fd420abSGabriele Monaco 
8*9fd420abSGabriele Monaco enum states_tss {
9*9fd420abSGabriele Monaco 	thread_tss = 0,
10*9fd420abSGabriele Monaco 	sched_tss,
11*9fd420abSGabriele Monaco 	state_max_tss
12*9fd420abSGabriele Monaco };
13*9fd420abSGabriele Monaco 
14*9fd420abSGabriele Monaco #define INVALID_STATE state_max_tss
15*9fd420abSGabriele Monaco 
16*9fd420abSGabriele Monaco enum events_tss {
17*9fd420abSGabriele Monaco 	sched_switch_tss = 0,
18*9fd420abSGabriele Monaco 	schedule_entry_tss,
19*9fd420abSGabriele Monaco 	schedule_exit_tss,
20*9fd420abSGabriele Monaco 	event_max_tss
21*9fd420abSGabriele Monaco };
22*9fd420abSGabriele Monaco 
23*9fd420abSGabriele Monaco struct automaton_tss {
24*9fd420abSGabriele Monaco 	char *state_names[state_max_tss];
25*9fd420abSGabriele Monaco 	char *event_names[event_max_tss];
26*9fd420abSGabriele Monaco 	unsigned char function[state_max_tss][event_max_tss];
27*9fd420abSGabriele Monaco 	unsigned char initial_state;
28*9fd420abSGabriele Monaco 	bool final_states[state_max_tss];
29*9fd420abSGabriele Monaco };
30*9fd420abSGabriele Monaco 
31*9fd420abSGabriele Monaco static const struct automaton_tss automaton_tss = {
32*9fd420abSGabriele Monaco 	.state_names = {
33*9fd420abSGabriele Monaco 		"thread",
34*9fd420abSGabriele Monaco 		"sched"
35*9fd420abSGabriele Monaco 	},
36*9fd420abSGabriele Monaco 	.event_names = {
37*9fd420abSGabriele Monaco 		"sched_switch",
38*9fd420abSGabriele Monaco 		"schedule_entry",
39*9fd420abSGabriele Monaco 		"schedule_exit"
40*9fd420abSGabriele Monaco 	},
41*9fd420abSGabriele Monaco 	.function = {
42*9fd420abSGabriele Monaco 		{     INVALID_STATE,         sched_tss,     INVALID_STATE },
43*9fd420abSGabriele Monaco 		{         sched_tss,     INVALID_STATE,        thread_tss },
44*9fd420abSGabriele Monaco 	},
45*9fd420abSGabriele Monaco 	.initial_state = thread_tss,
46*9fd420abSGabriele Monaco 	.final_states = { 1, 0 },
47*9fd420abSGabriele Monaco };
48