1*13578a08SGabriele Monaco /* SPDX-License-Identifier: GPL-2.0 */ 2*13578a08SGabriele Monaco /* 3*13578a08SGabriele Monaco * Automatically generated C representation of stall automaton 4*13578a08SGabriele Monaco * For further information about this format, see kernel documentation: 5*13578a08SGabriele Monaco * Documentation/trace/rv/deterministic_automata.rst 6*13578a08SGabriele Monaco */ 7*13578a08SGabriele Monaco 8*13578a08SGabriele Monaco #define MONITOR_NAME stall 9*13578a08SGabriele Monaco 10*13578a08SGabriele Monaco enum states_stall { 11*13578a08SGabriele Monaco dequeued_stall, 12*13578a08SGabriele Monaco enqueued_stall, 13*13578a08SGabriele Monaco running_stall, 14*13578a08SGabriele Monaco state_max_stall, 15*13578a08SGabriele Monaco }; 16*13578a08SGabriele Monaco 17*13578a08SGabriele Monaco #define INVALID_STATE state_max_stall 18*13578a08SGabriele Monaco 19*13578a08SGabriele Monaco enum events_stall { 20*13578a08SGabriele Monaco sched_switch_in_stall, 21*13578a08SGabriele Monaco sched_switch_preempt_stall, 22*13578a08SGabriele Monaco sched_switch_wait_stall, 23*13578a08SGabriele Monaco sched_wakeup_stall, 24*13578a08SGabriele Monaco event_max_stall, 25*13578a08SGabriele Monaco }; 26*13578a08SGabriele Monaco 27*13578a08SGabriele Monaco enum envs_stall { 28*13578a08SGabriele Monaco clk_stall, 29*13578a08SGabriele Monaco env_max_stall, 30*13578a08SGabriele Monaco env_max_stored_stall = env_max_stall, 31*13578a08SGabriele Monaco }; 32*13578a08SGabriele Monaco 33*13578a08SGabriele Monaco _Static_assert(env_max_stored_stall <= MAX_HA_ENV_LEN, "Not enough slots"); 34*13578a08SGabriele Monaco 35*13578a08SGabriele Monaco struct automaton_stall { 36*13578a08SGabriele Monaco char *state_names[state_max_stall]; 37*13578a08SGabriele Monaco char *event_names[event_max_stall]; 38*13578a08SGabriele Monaco char *env_names[env_max_stall]; 39*13578a08SGabriele Monaco unsigned char function[state_max_stall][event_max_stall]; 40*13578a08SGabriele Monaco unsigned char initial_state; 41*13578a08SGabriele Monaco bool final_states[state_max_stall]; 42*13578a08SGabriele Monaco }; 43*13578a08SGabriele Monaco 44*13578a08SGabriele Monaco static const struct automaton_stall automaton_stall = { 45*13578a08SGabriele Monaco .state_names = { 46*13578a08SGabriele Monaco "dequeued", 47*13578a08SGabriele Monaco "enqueued", 48*13578a08SGabriele Monaco "running", 49*13578a08SGabriele Monaco }, 50*13578a08SGabriele Monaco .event_names = { 51*13578a08SGabriele Monaco "sched_switch_in", 52*13578a08SGabriele Monaco "sched_switch_preempt", 53*13578a08SGabriele Monaco "sched_switch_wait", 54*13578a08SGabriele Monaco "sched_wakeup", 55*13578a08SGabriele Monaco }, 56*13578a08SGabriele Monaco .env_names = { 57*13578a08SGabriele Monaco "clk", 58*13578a08SGabriele Monaco }, 59*13578a08SGabriele Monaco .function = { 60*13578a08SGabriele Monaco { 61*13578a08SGabriele Monaco INVALID_STATE, 62*13578a08SGabriele Monaco INVALID_STATE, 63*13578a08SGabriele Monaco INVALID_STATE, 64*13578a08SGabriele Monaco enqueued_stall, 65*13578a08SGabriele Monaco }, 66*13578a08SGabriele Monaco { 67*13578a08SGabriele Monaco running_stall, 68*13578a08SGabriele Monaco INVALID_STATE, 69*13578a08SGabriele Monaco INVALID_STATE, 70*13578a08SGabriele Monaco enqueued_stall, 71*13578a08SGabriele Monaco }, 72*13578a08SGabriele Monaco { 73*13578a08SGabriele Monaco running_stall, 74*13578a08SGabriele Monaco enqueued_stall, 75*13578a08SGabriele Monaco dequeued_stall, 76*13578a08SGabriele Monaco running_stall, 77*13578a08SGabriele Monaco }, 78*13578a08SGabriele Monaco }, 79*13578a08SGabriele Monaco .initial_state = dequeued_stall, 80*13578a08SGabriele Monaco .final_states = { 1, 0, 0 }, 81*13578a08SGabriele Monaco }; 82