0001
0002
0003
0004
0005
0006
0007 enum states_wip {
0008 preemptive_wip = 0,
0009 non_preemptive_wip,
0010 state_max_wip
0011 };
0012
0013 #define INVALID_STATE state_max_wip
0014
0015 enum events_wip {
0016 preempt_disable_wip = 0,
0017 preempt_enable_wip,
0018 sched_waking_wip,
0019 event_max_wip
0020 };
0021
0022 struct automaton_wip {
0023 char *state_names[state_max_wip];
0024 char *event_names[event_max_wip];
0025 unsigned char function[state_max_wip][event_max_wip];
0026 unsigned char initial_state;
0027 bool final_states[state_max_wip];
0028 };
0029
0030 static struct automaton_wip automaton_wip = {
0031 .state_names = {
0032 "preemptive",
0033 "non_preemptive"
0034 },
0035 .event_names = {
0036 "preempt_disable",
0037 "preempt_enable",
0038 "sched_waking"
0039 },
0040 .function = {
0041 { non_preemptive_wip, INVALID_STATE, INVALID_STATE },
0042 { INVALID_STATE, preemptive_wip, non_preemptive_wip },
0043 },
0044 .initial_state = preemptive_wip,
0045 .final_states = { 1, 0 },
0046 };