mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-08-15 14:37:33 +00:00
verification/rvgen: Organise Kconfig entries for nested monitors
The current behaviour of rvgen when running with the -a option is to append the necessary lines at the end of the configuration for Kconfig, Makefile and tracepoints. This is not always the desired behaviour in case of nested monitors: while tracepoints are not affected by nesting and the Makefile's only requirement is that the parent monitor is built before its children, in the Kconfig it is better to have children defined right after their parent, otherwise the result has wrong indentation: [*] foo_parent monitor [*] foo_child1 monitor [*] foo_child2 monitor [*] bar_parent monitor [*] bar_child1 monitor [*] bar_child2 monitor [*] foo_child3 monitor [*] foo_child4 monitor Adapt rvgen to look for a different marker for nested monitors in the Kconfig file and append the line right after the last sibling, instead of the last monitor. Also add the marker when creating a new parent monitor. 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-5-gmonaco@redhat.com Reviewed-by: Nam Cao <namcao@linutronix.de> Signed-off-by: Gabriele Monaco <gmonaco@redhat.com> Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
This commit is contained in:
parent
9efcf59082
commit
560473f2e2
@ -43,6 +43,7 @@ config RV_PER_TASK_MONITORS
|
||||
|
||||
source "kernel/trace/rv/monitors/wip/Kconfig"
|
||||
source "kernel/trace/rv/monitors/wwnr/Kconfig"
|
||||
|
||||
source "kernel/trace/rv/monitors/sched/Kconfig"
|
||||
source "kernel/trace/rv/monitors/tss/Kconfig"
|
||||
source "kernel/trace/rv/monitors/sco/Kconfig"
|
||||
@ -50,9 +51,13 @@ source "kernel/trace/rv/monitors/snroc/Kconfig"
|
||||
source "kernel/trace/rv/monitors/scpd/Kconfig"
|
||||
source "kernel/trace/rv/monitors/snep/Kconfig"
|
||||
source "kernel/trace/rv/monitors/sncid/Kconfig"
|
||||
# Add new sched monitors here
|
||||
|
||||
source "kernel/trace/rv/monitors/rtapp/Kconfig"
|
||||
source "kernel/trace/rv/monitors/pagefault/Kconfig"
|
||||
source "kernel/trace/rv/monitors/sleep/Kconfig"
|
||||
# Add new rtapp monitors here
|
||||
|
||||
# Add new monitors here
|
||||
|
||||
config RV_REACTORS
|
||||
|
@ -20,3 +20,13 @@ class Container(generator.RVGenerator):
|
||||
main_h = self.main_h
|
||||
main_h = main_h.replace("%%MODEL_NAME%%", self.name)
|
||||
return main_h
|
||||
|
||||
def fill_kconfig_tooltip(self):
|
||||
"""Override to produce a marker for this container in the Kconfig"""
|
||||
container_marker = self._kconfig_marker(self.name) + "\n"
|
||||
result = super().fill_kconfig_tooltip()
|
||||
if self.auto_patch:
|
||||
self._patch_file("Kconfig",
|
||||
self._kconfig_marker(), container_marker)
|
||||
return result
|
||||
return result + container_marker
|
||||
|
@ -137,7 +137,8 @@ class RVGenerator:
|
||||
kconfig = kconfig.replace("%%MONITOR_DEPS%%", monitor_deps)
|
||||
return kconfig
|
||||
|
||||
def __patch_file(self, file, marker, line):
|
||||
def _patch_file(self, file, marker, line):
|
||||
assert self.auto_patch
|
||||
file_to_patch = os.path.join(self.rv_dir, file)
|
||||
content = self._read_file(file_to_patch)
|
||||
content = content.replace(marker, line + "\n" + marker)
|
||||
@ -146,7 +147,7 @@ class RVGenerator:
|
||||
def fill_tracepoint_tooltip(self):
|
||||
monitor_class_type = self.fill_monitor_class_type()
|
||||
if self.auto_patch:
|
||||
self.__patch_file("rv_trace.h",
|
||||
self._patch_file("rv_trace.h",
|
||||
"// Add new monitors based on CONFIG_%s here" % monitor_class_type,
|
||||
"#include <monitors/%s/%s_trace.h>" % (self.name, self.name))
|
||||
return " - Patching %s/rv_trace.h, double check the result" % self.rv_dir
|
||||
@ -156,10 +157,15 @@ Add this line where other tracepoints are included and %s is defined:
|
||||
#include <monitors/%s/%s_trace.h>
|
||||
""" % (self.rv_dir, monitor_class_type, self.name, self.name)
|
||||
|
||||
def _kconfig_marker(self, container=None) -> str:
|
||||
return "# Add new %smonitors here" % (container + " "
|
||||
if container else "")
|
||||
|
||||
def fill_kconfig_tooltip(self):
|
||||
if self.auto_patch:
|
||||
self.__patch_file("Kconfig",
|
||||
"# Add new monitors here",
|
||||
# monitors with a container should stay together in the Kconfig
|
||||
self._patch_file("Kconfig",
|
||||
self._kconfig_marker(self.parent),
|
||||
"source \"kernel/trace/rv/monitors/%s/Kconfig\"" % (self.name))
|
||||
return " - Patching %s/Kconfig, double check the result" % self.rv_dir
|
||||
|
||||
@ -172,7 +178,7 @@ source \"kernel/trace/rv/monitors/%s/Kconfig\"
|
||||
name = self.name
|
||||
name_up = name.upper()
|
||||
if self.auto_patch:
|
||||
self.__patch_file("Makefile",
|
||||
self._patch_file("Makefile",
|
||||
"# Add new monitors here",
|
||||
"obj-$(CONFIG_RV_MON_%s) += monitors/%s/%s.o" % (name_up, name, name))
|
||||
return " - Patching %s/Makefile, double check the result" % self.rv_dir
|
||||
|
Loading…
Reference in New Issue
Block a user