Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

verification/dot2c: Remove superfluous enum assignment and add last comma

The header files generated by dot2c currently create enums for states
and events assigning the first element to 0. This is superfluous as it
happens automatically if no value is specified.
Also it doesn't add a comma to the last enum elements, which slightly
complicates the diff if states or events are added.

Remove the assignment to 0 and add a comma to last elements, this
simplifies the logic for the code generator.

Reviewed-by: Nam Cao <namcao@linutronix.de>
Link: https://lore.kernel.org/r/20251126104241.291258-8-gmonaco@redhat.com
Signed-off-by: Gabriele Monaco <gmonaco@redhat.com>

+94 -106
+10 -10
kernel/trace/rv/monitors/nrp/nrp.h
··· 8 8 #define MONITOR_NAME nrp 9 9 10 10 enum states_nrp { 11 - preempt_irq_nrp = 0, 11 + preempt_irq_nrp, 12 12 any_thread_running_nrp, 13 13 nested_preempt_nrp, 14 14 rescheduling_nrp, 15 - state_max_nrp 15 + state_max_nrp, 16 16 }; 17 17 18 18 #define INVALID_STATE state_max_nrp 19 19 20 20 enum events_nrp { 21 - irq_entry_nrp = 0, 21 + irq_entry_nrp, 22 22 sched_need_resched_nrp, 23 23 schedule_entry_nrp, 24 24 schedule_entry_preempt_nrp, 25 - event_max_nrp 25 + event_max_nrp, 26 26 }; 27 27 28 28 struct automaton_nrp { ··· 38 38 "preempt_irq", 39 39 "any_thread_running", 40 40 "nested_preempt", 41 - "rescheduling" 41 + "rescheduling", 42 42 }, 43 43 .event_names = { 44 44 "irq_entry", 45 45 "sched_need_resched", 46 46 "schedule_entry", 47 - "schedule_entry_preempt" 47 + "schedule_entry_preempt", 48 48 }, 49 49 .function = { 50 50 { 51 51 preempt_irq_nrp, 52 52 preempt_irq_nrp, 53 53 nested_preempt_nrp, 54 - nested_preempt_nrp 54 + nested_preempt_nrp, 55 55 }, 56 56 { 57 57 any_thread_running_nrp, 58 58 rescheduling_nrp, 59 59 any_thread_running_nrp, 60 - INVALID_STATE 60 + INVALID_STATE, 61 61 }, 62 62 { 63 63 nested_preempt_nrp, 64 64 preempt_irq_nrp, 65 65 any_thread_running_nrp, 66 - any_thread_running_nrp 66 + any_thread_running_nrp, 67 67 }, 68 68 { 69 69 preempt_irq_nrp, 70 70 rescheduling_nrp, 71 71 any_thread_running_nrp, 72 - any_thread_running_nrp 72 + any_thread_running_nrp, 73 73 }, 74 74 }, 75 75 .initial_state = preempt_irq_nrp,
+11 -11
kernel/trace/rv/monitors/opid/opid.h
··· 8 8 #define MONITOR_NAME opid 9 9 10 10 enum states_opid { 11 - disabled_opid = 0, 11 + disabled_opid, 12 12 enabled_opid, 13 13 in_irq_opid, 14 14 irq_disabled_opid, 15 15 preempt_disabled_opid, 16 - state_max_opid 16 + state_max_opid, 17 17 }; 18 18 19 19 #define INVALID_STATE state_max_opid 20 20 21 21 enum events_opid { 22 - irq_disable_opid = 0, 22 + irq_disable_opid, 23 23 irq_enable_opid, 24 24 irq_entry_opid, 25 25 preempt_disable_opid, 26 26 preempt_enable_opid, 27 27 sched_need_resched_opid, 28 28 sched_waking_opid, 29 - event_max_opid 29 + event_max_opid, 30 30 }; 31 31 32 32 struct automaton_opid { ··· 43 43 "enabled", 44 44 "in_irq", 45 45 "irq_disabled", 46 - "preempt_disabled" 46 + "preempt_disabled", 47 47 }, 48 48 .event_names = { 49 49 "irq_disable", ··· 52 52 "preempt_disable", 53 53 "preempt_enable", 54 54 "sched_need_resched", 55 - "sched_waking" 55 + "sched_waking", 56 56 }, 57 57 .function = { 58 58 { ··· 62 62 INVALID_STATE, 63 63 irq_disabled_opid, 64 64 disabled_opid, 65 - disabled_opid 65 + disabled_opid, 66 66 }, 67 67 { 68 68 irq_disabled_opid, ··· 71 71 preempt_disabled_opid, 72 72 enabled_opid, 73 73 INVALID_STATE, 74 - INVALID_STATE 74 + INVALID_STATE, 75 75 }, 76 76 { 77 77 INVALID_STATE, ··· 80 80 INVALID_STATE, 81 81 INVALID_STATE, 82 82 in_irq_opid, 83 - in_irq_opid 83 + in_irq_opid, 84 84 }, 85 85 { 86 86 INVALID_STATE, ··· 89 89 disabled_opid, 90 90 INVALID_STATE, 91 91 irq_disabled_opid, 92 - INVALID_STATE 92 + INVALID_STATE, 93 93 }, 94 94 { 95 95 disabled_opid, ··· 98 98 INVALID_STATE, 99 99 enabled_opid, 100 100 INVALID_STATE, 101 - INVALID_STATE 101 + INVALID_STATE, 102 102 }, 103 103 }, 104 104 .initial_state = disabled_opid,
+6 -6
kernel/trace/rv/monitors/sco/sco.h
··· 8 8 #define MONITOR_NAME sco 9 9 10 10 enum states_sco { 11 - thread_context_sco = 0, 11 + thread_context_sco, 12 12 scheduling_context_sco, 13 - state_max_sco 13 + state_max_sco, 14 14 }; 15 15 16 16 #define INVALID_STATE state_max_sco 17 17 18 18 enum events_sco { 19 - sched_set_state_sco = 0, 19 + sched_set_state_sco, 20 20 schedule_entry_sco, 21 21 schedule_exit_sco, 22 - event_max_sco 22 + event_max_sco, 23 23 }; 24 24 25 25 struct automaton_sco { ··· 33 33 static const struct automaton_sco automaton_sco = { 34 34 .state_names = { 35 35 "thread_context", 36 - "scheduling_context" 36 + "scheduling_context", 37 37 }, 38 38 .event_names = { 39 39 "sched_set_state", 40 40 "schedule_entry", 41 - "schedule_exit" 41 + "schedule_exit", 42 42 }, 43 43 .function = { 44 44 { thread_context_sco, scheduling_context_sco, INVALID_STATE },
+6 -6
kernel/trace/rv/monitors/scpd/scpd.h
··· 8 8 #define MONITOR_NAME scpd 9 9 10 10 enum states_scpd { 11 - cant_sched_scpd = 0, 11 + cant_sched_scpd, 12 12 can_sched_scpd, 13 - state_max_scpd 13 + state_max_scpd, 14 14 }; 15 15 16 16 #define INVALID_STATE state_max_scpd 17 17 18 18 enum events_scpd { 19 - preempt_disable_scpd = 0, 19 + preempt_disable_scpd, 20 20 preempt_enable_scpd, 21 21 schedule_entry_scpd, 22 22 schedule_exit_scpd, 23 - event_max_scpd 23 + event_max_scpd, 24 24 }; 25 25 26 26 struct automaton_scpd { ··· 34 34 static const struct automaton_scpd automaton_scpd = { 35 35 .state_names = { 36 36 "cant_sched", 37 - "can_sched" 37 + "can_sched", 38 38 }, 39 39 .event_names = { 40 40 "preempt_disable", 41 41 "preempt_enable", 42 42 "schedule_entry", 43 - "schedule_exit" 43 + "schedule_exit", 44 44 }, 45 45 .function = { 46 46 { can_sched_scpd, INVALID_STATE, INVALID_STATE, INVALID_STATE },
+8 -8
kernel/trace/rv/monitors/snep/snep.h
··· 8 8 #define MONITOR_NAME snep 9 9 10 10 enum states_snep { 11 - non_scheduling_context_snep = 0, 11 + non_scheduling_context_snep, 12 12 scheduling_contex_snep, 13 - state_max_snep 13 + state_max_snep, 14 14 }; 15 15 16 16 #define INVALID_STATE state_max_snep 17 17 18 18 enum events_snep { 19 - preempt_disable_snep = 0, 19 + preempt_disable_snep, 20 20 preempt_enable_snep, 21 21 schedule_entry_snep, 22 22 schedule_exit_snep, 23 - event_max_snep 23 + event_max_snep, 24 24 }; 25 25 26 26 struct automaton_snep { ··· 34 34 static const struct automaton_snep automaton_snep = { 35 35 .state_names = { 36 36 "non_scheduling_context", 37 - "scheduling_contex" 37 + "scheduling_contex", 38 38 }, 39 39 .event_names = { 40 40 "preempt_disable", 41 41 "preempt_enable", 42 42 "schedule_entry", 43 - "schedule_exit" 43 + "schedule_exit", 44 44 }, 45 45 .function = { 46 46 { 47 47 non_scheduling_context_snep, 48 48 non_scheduling_context_snep, 49 49 scheduling_contex_snep, 50 - INVALID_STATE 50 + INVALID_STATE, 51 51 }, 52 52 { 53 53 INVALID_STATE, 54 54 INVALID_STATE, 55 55 INVALID_STATE, 56 - non_scheduling_context_snep 56 + non_scheduling_context_snep, 57 57 }, 58 58 }, 59 59 .initial_state = non_scheduling_context_snep,
+6 -6
kernel/trace/rv/monitors/snroc/snroc.h
··· 8 8 #define MONITOR_NAME snroc 9 9 10 10 enum states_snroc { 11 - other_context_snroc = 0, 11 + other_context_snroc, 12 12 own_context_snroc, 13 - state_max_snroc 13 + state_max_snroc, 14 14 }; 15 15 16 16 #define INVALID_STATE state_max_snroc 17 17 18 18 enum events_snroc { 19 - sched_set_state_snroc = 0, 19 + sched_set_state_snroc, 20 20 sched_switch_in_snroc, 21 21 sched_switch_out_snroc, 22 - event_max_snroc 22 + event_max_snroc, 23 23 }; 24 24 25 25 struct automaton_snroc { ··· 33 33 static const struct automaton_snroc automaton_snroc = { 34 34 .state_names = { 35 35 "other_context", 36 - "own_context" 36 + "own_context", 37 37 }, 38 38 .event_names = { 39 39 "sched_set_state", 40 40 "sched_switch_in", 41 - "sched_switch_out" 41 + "sched_switch_out", 42 42 }, 43 43 .function = { 44 44 { INVALID_STATE, own_context_snroc, INVALID_STATE },
+10 -10
kernel/trace/rv/monitors/sssw/sssw.h
··· 8 8 #define MONITOR_NAME sssw 9 9 10 10 enum states_sssw { 11 - runnable_sssw = 0, 11 + runnable_sssw, 12 12 signal_wakeup_sssw, 13 13 sleepable_sssw, 14 14 sleeping_sssw, 15 - state_max_sssw 15 + state_max_sssw, 16 16 }; 17 17 18 18 #define INVALID_STATE state_max_sssw 19 19 20 20 enum events_sssw { 21 - sched_set_state_runnable_sssw = 0, 21 + sched_set_state_runnable_sssw, 22 22 sched_set_state_sleepable_sssw, 23 23 sched_switch_blocking_sssw, 24 24 sched_switch_in_sssw, ··· 27 27 sched_switch_yield_sssw, 28 28 sched_wakeup_sssw, 29 29 signal_deliver_sssw, 30 - event_max_sssw 30 + event_max_sssw, 31 31 }; 32 32 33 33 struct automaton_sssw { ··· 43 43 "runnable", 44 44 "signal_wakeup", 45 45 "sleepable", 46 - "sleeping" 46 + "sleeping", 47 47 }, 48 48 .event_names = { 49 49 "sched_set_state_runnable", ··· 54 54 "sched_switch_suspend", 55 55 "sched_switch_yield", 56 56 "sched_wakeup", 57 - "signal_deliver" 57 + "signal_deliver", 58 58 }, 59 59 .function = { 60 60 { ··· 66 66 INVALID_STATE, 67 67 runnable_sssw, 68 68 runnable_sssw, 69 - runnable_sssw 69 + runnable_sssw, 70 70 }, 71 71 { 72 72 INVALID_STATE, ··· 77 77 INVALID_STATE, 78 78 signal_wakeup_sssw, 79 79 signal_wakeup_sssw, 80 - runnable_sssw 80 + runnable_sssw, 81 81 }, 82 82 { 83 83 runnable_sssw, ··· 88 88 sleeping_sssw, 89 89 signal_wakeup_sssw, 90 90 runnable_sssw, 91 - sleepable_sssw 91 + sleepable_sssw, 92 92 }, 93 93 { 94 94 INVALID_STATE, ··· 99 99 INVALID_STATE, 100 100 INVALID_STATE, 101 101 runnable_sssw, 102 - INVALID_STATE 102 + INVALID_STATE, 103 103 }, 104 104 }, 105 105 .initial_state = runnable_sssw,
+13 -13
kernel/trace/rv/monitors/sts/sts.h
··· 8 8 #define MONITOR_NAME sts 9 9 10 10 enum states_sts { 11 - can_sched_sts = 0, 11 + can_sched_sts, 12 12 cant_sched_sts, 13 13 disable_to_switch_sts, 14 14 enable_to_exit_sts, 15 15 in_irq_sts, 16 16 scheduling_sts, 17 17 switching_sts, 18 - state_max_sts 18 + state_max_sts, 19 19 }; 20 20 21 21 #define INVALID_STATE state_max_sts 22 22 23 23 enum events_sts { 24 - irq_disable_sts = 0, 24 + irq_disable_sts, 25 25 irq_enable_sts, 26 26 irq_entry_sts, 27 27 sched_switch_sts, 28 28 schedule_entry_sts, 29 29 schedule_exit_sts, 30 - event_max_sts 30 + event_max_sts, 31 31 }; 32 32 33 33 struct automaton_sts { ··· 46 46 "enable_to_exit", 47 47 "in_irq", 48 48 "scheduling", 49 - "switching" 49 + "switching", 50 50 }, 51 51 .event_names = { 52 52 "irq_disable", ··· 54 54 "irq_entry", 55 55 "sched_switch", 56 56 "schedule_entry", 57 - "schedule_exit" 57 + "schedule_exit", 58 58 }, 59 59 .function = { 60 60 { ··· 63 63 INVALID_STATE, 64 64 INVALID_STATE, 65 65 scheduling_sts, 66 - INVALID_STATE 66 + INVALID_STATE, 67 67 }, 68 68 { 69 69 INVALID_STATE, ··· 71 71 cant_sched_sts, 72 72 INVALID_STATE, 73 73 INVALID_STATE, 74 - INVALID_STATE 74 + INVALID_STATE, 75 75 }, 76 76 { 77 77 INVALID_STATE, ··· 79 79 in_irq_sts, 80 80 switching_sts, 81 81 INVALID_STATE, 82 - INVALID_STATE 82 + INVALID_STATE, 83 83 }, 84 84 { 85 85 enable_to_exit_sts, ··· 87 87 enable_to_exit_sts, 88 88 INVALID_STATE, 89 89 INVALID_STATE, 90 - can_sched_sts 90 + can_sched_sts, 91 91 }, 92 92 { 93 93 INVALID_STATE, ··· 95 95 in_irq_sts, 96 96 INVALID_STATE, 97 97 INVALID_STATE, 98 - INVALID_STATE 98 + INVALID_STATE, 99 99 }, 100 100 { 101 101 disable_to_switch_sts, ··· 103 103 INVALID_STATE, 104 104 INVALID_STATE, 105 105 INVALID_STATE, 106 - INVALID_STATE 106 + INVALID_STATE, 107 107 }, 108 108 { 109 109 INVALID_STATE, ··· 111 111 INVALID_STATE, 112 112 INVALID_STATE, 113 113 INVALID_STATE, 114 - INVALID_STATE 114 + INVALID_STATE, 115 115 }, 116 116 }, 117 117 .initial_state = can_sched_sts,
+6 -6
kernel/trace/rv/monitors/wip/wip.h
··· 8 8 #define MONITOR_NAME wip 9 9 10 10 enum states_wip { 11 - preemptive_wip = 0, 11 + preemptive_wip, 12 12 non_preemptive_wip, 13 - state_max_wip 13 + state_max_wip, 14 14 }; 15 15 16 16 #define INVALID_STATE state_max_wip 17 17 18 18 enum events_wip { 19 - preempt_disable_wip = 0, 19 + preempt_disable_wip, 20 20 preempt_enable_wip, 21 21 sched_waking_wip, 22 - event_max_wip 22 + event_max_wip, 23 23 }; 24 24 25 25 struct automaton_wip { ··· 33 33 static const struct automaton_wip automaton_wip = { 34 34 .state_names = { 35 35 "preemptive", 36 - "non_preemptive" 36 + "non_preemptive", 37 37 }, 38 38 .event_names = { 39 39 "preempt_disable", 40 40 "preempt_enable", 41 - "sched_waking" 41 + "sched_waking", 42 42 }, 43 43 .function = { 44 44 { non_preemptive_wip, INVALID_STATE, INVALID_STATE },
+6 -6
kernel/trace/rv/monitors/wwnr/wwnr.h
··· 8 8 #define MONITOR_NAME wwnr 9 9 10 10 enum states_wwnr { 11 - not_running_wwnr = 0, 11 + not_running_wwnr, 12 12 running_wwnr, 13 - state_max_wwnr 13 + state_max_wwnr, 14 14 }; 15 15 16 16 #define INVALID_STATE state_max_wwnr 17 17 18 18 enum events_wwnr { 19 - switch_in_wwnr = 0, 19 + switch_in_wwnr, 20 20 switch_out_wwnr, 21 21 wakeup_wwnr, 22 - event_max_wwnr 22 + event_max_wwnr, 23 23 }; 24 24 25 25 struct automaton_wwnr { ··· 33 33 static const struct automaton_wwnr automaton_wwnr = { 34 34 .state_names = { 35 35 "not_running", 36 - "running" 36 + "running", 37 37 }, 38 38 .event_names = { 39 39 "switch_in", 40 40 "switch_out", 41 - "wakeup" 41 + "wakeup", 42 42 }, 43 43 .function = { 44 44 { running_wwnr, INVALID_STATE, not_running_wwnr },
+12 -24
tools/verification/rvgen/rvgen/dot2c.py
··· 28 28 29 29 def __get_enum_states_content(self) -> list[str]: 30 30 buff = [] 31 - buff.append("\t%s%s = 0," % (self.initial_state, self.enum_suffix)) 31 + buff.append("\t%s%s," % (self.initial_state, self.enum_suffix)) 32 32 for state in self.states: 33 33 if state != self.initial_state: 34 34 buff.append("\t%s%s," % (state, self.enum_suffix)) 35 - buff.append("\tstate_max%s" % (self.enum_suffix)) 35 + buff.append("\tstate_max%s," % (self.enum_suffix)) 36 36 37 37 return buff 38 38 ··· 46 46 47 47 def __get_enum_events_content(self) -> list[str]: 48 48 buff = [] 49 - first = True 50 49 for event in self.events: 51 - if first: 52 - buff.append("\t%s%s = 0," % (event, self.enum_suffix)) 53 - first = False 54 - else: 55 - buff.append("\t%s%s," % (event, self.enum_suffix)) 50 + buff.append("\t%s%s," % (event, self.enum_suffix)) 56 51 57 - buff.append("\tevent_max%s" % self.enum_suffix) 52 + buff.append("\tevent_max%s," % self.enum_suffix) 58 53 59 54 return buff 60 55 ··· 92 97 buff.append("static const struct %s %s = {" % (self.struct_automaton_def, self.var_automaton_def)) 93 98 return buff 94 99 95 - def __get_string_vector_per_line_content(self, buff: list[str]) -> str: 96 - first = True 97 - string = "" 98 - for entry in buff: 99 - if first: 100 - string = string + "\t\t\"" + entry 101 - first = False; 102 - else: 103 - string = string + "\",\n\t\t\"" + entry 104 - string = string + "\"" 105 - 106 - return string 100 + def __get_string_vector_per_line_content(self, entries: list[str]) -> str: 101 + buff = [] 102 + for entry in entries: 103 + buff.append(f"\t\t\"{entry}\",") 104 + return "\n".join(buff) 107 105 108 106 def format_aut_init_events_string(self) -> list[str]: 109 107 buff = [] ··· 140 152 if y != nr_events-1: 141 153 line += ",\n" if linetoolong else ", " 142 154 else: 143 - line += "\n\t\t}," if linetoolong else " }," 155 + line += ",\n\t\t}," if linetoolong else " }," 144 156 buff.append(line) 145 157 146 158 return '\n'.join(buff) ··· 167 179 line = "" 168 180 first = True 169 181 for state in self.states: 170 - if first == False: 182 + if not first: 171 183 line = line + ', ' 172 184 else: 173 185 first = False 174 186 175 - if self.final_states.__contains__(state): 187 + if state in self.final_states: 176 188 line = line + '1' 177 189 else: 178 190 line = line + '0'