]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
tools/dot2c: Fix generated files going over 100 column limit
authorGabriele Monaco <gmonaco@redhat.com>
Wed, 23 Jul 2025 16:12:38 +0000 (18:12 +0200)
committerSteven Rostedt (Google) <rostedt@goodmis.org>
Thu, 24 Jul 2025 14:43:46 +0000 (10:43 -0400)
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: Nam Cao <namcao@linutronix.de>
Signed-off-by: Gabriele Monaco <gmonaco@redhat.com>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
kernel/trace/rv/monitors/snep/snep.h
tools/verification/rvgen/rvgen/dot2c.py

index 6d16b9ad931e1f000860736c7517f6fd7e365d8d..4cd9abb77b7b2a01c64833fc59b19d4406116aef 100644 (file)
@@ -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 },
index 6009caf568d924f3498bf85829817898512bdb50..b9b6f14cc536a2237cae549b65eb84550caf15af 100644 (file)
@@ -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)