Commit 9efcf590 authored by Gabriele Monaco's avatar Gabriele Monaco Committed by Steven Rostedt (Google)
Browse files

tools/dot2c: Fix generated files going over 100 column limit

The dot2c.py script generates all states in a single line. This breaks the
100 column limit when the state machines are non-trivial.

Change dot2c.py to generate the states in separate lines in case the
generated line is going to be too long.

Also adapt existing monitors with line length over the limit.

Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Tomas Glozar <tglozar@redhat.com>
Cc: Juri Lelli <jlelli@redhat.com>
Cc: Clark Williams <williams@redhat.com>
Cc: John Kacur <jkacur@redhat.com>
Link: https://lore.kernel.org/20250723161240.194860-4-gmonaco@redhat.com


Suggested-by: default avatarNam Cao <namcao@linutronix.de>
Signed-off-by: default avatarGabriele Monaco <gmonaco@redhat.com>
Signed-off-by: default avatarSteven Rostedt (Google) <rostedt@goodmis.org>
parent 1160ccaf
Loading
Loading
Loading
Loading
+12 −2
Original line number Diff line number Diff line
@@ -41,8 +41,18 @@ static const struct automaton_snep automaton_snep = {
		"schedule_exit"
	},
	.function = {
		{ non_scheduling_context_snep, non_scheduling_context_snep, scheduling_contex_snep,               INVALID_STATE },
		{               INVALID_STATE,               INVALID_STATE,          INVALID_STATE, non_scheduling_context_snep },
		{
			non_scheduling_context_snep,
			non_scheduling_context_snep,
			scheduling_contex_snep,
			INVALID_STATE
		},
		{
			INVALID_STATE,
			INVALID_STATE,
			INVALID_STATE,
			non_scheduling_context_snep
		},
	},
	.initial_state = non_scheduling_context_snep,
	.final_states = { 1, 0 },
+11 −9
Original line number Diff line number Diff line
@@ -152,28 +152,30 @@ class Dot2c(Automata):
        max_state_name = max(self.states, key = len).__len__()
        return max(max_state_name, self.invalid_state_str.__len__())

    def __get_state_string_length(self):
        maxlen = self.__get_max_strlen_of_states() + self.enum_suffix.__len__()
        return "%" + str(maxlen) + "s"

    def get_aut_init_function(self):
        nr_states = self.states.__len__()
        nr_events = self.events.__len__()
        buff = []

        strformat = self.__get_state_string_length()

        maxlen = self.__get_max_strlen_of_states() + len(self.enum_suffix)
        tab_braces = 2 * 8 + 2 + 1  # "\t\t{ " ... "}"
        comma_space = 2  # ", " count last comma here
        linetoolong = tab_braces + (maxlen + comma_space) * nr_events > self.line_length
        for x in range(nr_states):
            line = "\t\t{ "
            line = "\t\t{\n" if linetoolong else "\t\t{ "
            for y in range(nr_events):
                next_state = self.function[x][y]
                if next_state != self.invalid_state_str:
                    next_state = self.function[x][y] + self.enum_suffix

                if linetoolong:
                    line += "\t\t\t%s" % next_state
                else:
                    line += "%*s" % (maxlen, next_state)
                if y != nr_events-1:
                    line = line + strformat % next_state + ", "
                    line += ",\n" if linetoolong else ", "
                else:
                    line = line + strformat % next_state + " },"
                    line += "\n\t\t}," if linetoolong else " },"
            buff.append(line)

        return self.__buff_to_string(buff)