@@ -23,4 +23,4 @@ install:
$(INSTALL) __main__.py -D -m 755 $(DESTDIR)$(bindir)/rvgen
mkdir -p ${miscdir}/
- cp -rp dot2k_templates $(DESTDIR)$(miscdir)/
+ cp -rp templates $(DESTDIR)$(miscdir)/
@@ -14,13 +14,16 @@ import os
class dot2k(Dot2c):
monitor_types = { "global" : 1, "per_cpu" : 2, "per_task" : 3 }
- monitor_templates_dir = "rvgen/dot2k_templates/"
rv_dir = "kernel/trace/rv"
monitor_type = "per_cpu"
def __init__(self, file_path, MonitorType, extra_params={}):
self.container = extra_params.get("subcmd") == "container"
self.parent = extra_params.get("parent")
+ if self.container:
+ self.monitor_templates_dir = "rvgen/templates/container"
+ else:
+ self.monitor_templates_dir = "rvgen/templates/dot2k"
self.__fill_rv_templates_dir()
if self.container:
@@ -33,9 +36,7 @@ class dot2k(Dot2c):
self.name = extra_params.get("model_name")
self.events = []
self.states = []
- self.main_c = self.__read_file(self.monitor_templates_dir + "main_container.c")
- self.main_h = self.__read_file(self.monitor_templates_dir + "main_container.h")
- self.kconfig = self.__read_file(self.monitor_templates_dir + "Kconfig_container")
+ self.main_h = self._read_template_file("main.h")
else:
super().__init__(file_path, extra_params.get("model_name"))
@@ -43,9 +44,10 @@ class dot2k(Dot2c):
if self.monitor_type is None:
raise ValueError("Unknown monitor type: %s" % MonitorType)
self.monitor_type = MonitorType
- self.main_c = self.__read_file(self.monitor_templates_dir + "main.c")
- self.trace_h = self.__read_file(self.monitor_templates_dir + "trace.h")
- self.kconfig = self.__read_file(self.monitor_templates_dir + "Kconfig")
+ self.trace_h = self._read_template_file("trace.h")
+
+ self.main_c = self._read_template_file("main.c")
+ self.kconfig = self._read_template_file("Kconfig")
self.enum_suffix = "_%s" % self.name
self.description = extra_params.get("description", self.name) or "auto-generated"
self.auto_patch = extra_params.get("auto_patch")
@@ -60,14 +62,15 @@ class dot2k(Dot2c):
if platform.system() != "Linux":
raise OSError("I can only run on Linux.")
- kernel_path = "/lib/modules/%s/build/tools/verification/rvgen/dot2k_templates/" % (platform.release())
+ kernel_path = "/lib/modules/%s/build/tools/verification/%s/" \
+ % (platform.release(), self.monitor_templates_dir)
if os.path.exists(kernel_path):
self.monitor_templates_dir = kernel_path
return
- if os.path.exists("/usr/share/rvgen/dot2k_templates/"):
- self.monitor_templates_dir = "/usr/share/rvgen/dot2k_templates/"
+ if os.path.exists("/usr/share/%s/" % self.monitor_templates_dir):
+ self.monitor_templates_dir = "/usr/share/%s/" % self.monitor_templates_dir
return
raise FileNotFoundError("Could not find the template directory, do you have the kernel source installed?")
@@ -109,6 +112,16 @@ class dot2k(Dot2c):
fd.close()
return content
+ def _read_template_file(self, file):
+ try:
+ path = os.path.join(self.monitor_templates_dir, file)
+ return self.__read_file(path)
+ except Exception:
+ # Specific template file not found. Try the generic template file in the template/
+ # directory, which is one level up
+ path = os.path.join(self.monitor_templates_dir, "..", file)
+ return self.__read_file(path)
+
def fill_monitor_type(self):
return self.monitor_type.upper()
similarity index 100%
rename from tools/verification/rvgen/dot2k_templates/Kconfig
rename to tools/verification/rvgen/templates/Kconfig
similarity index 100%
rename from tools/verification/rvgen/dot2k_templates/Kconfig_container
rename to tools/verification/rvgen/templates/container/Kconfig
similarity index 100%
rename from tools/verification/rvgen/dot2k_templates/main_container.c
rename to tools/verification/rvgen/templates/container/main.c
similarity index 100%
rename from tools/verification/rvgen/dot2k_templates/main_container.h
rename to tools/verification/rvgen/templates/container/main.h
similarity index 100%
rename from tools/verification/rvgen/dot2k_templates/main.c
rename to tools/verification/rvgen/templates/dot2k/main.c
similarity index 100%
rename from tools/verification/rvgen/dot2k_templates/trace.h
rename to tools/verification/rvgen/templates/dot2k/trace.h
To prepare for the inclusion of linear temporal logic monitor, prepare the generation template files: - Rename the directory dot2k_templates to templates - Move the dot2k-specific files to templates/dot2k - Move the container-specific files to templates/container (Kconfig can be shared with LTL, therefore leave it at templates/) This new structure allows sharing code for reading Kconfig and main.c templates between DA monitor, container monitor and LTL monitor. The intention is to add template files for LTL to templates/ltl. Signed-off-by: Nam Cao <namcao@linutronix.de> --- tools/verification/rvgen/Makefile | 2 +- tools/verification/rvgen/rvgen/dot2k.py | 33 +++++++++++++------ .../{dot2k_templates => templates}/Kconfig | 0 .../container/Kconfig} | 0 .../container/main.c} | 0 .../container/main.h} | 0 .../dot2k}/main.c | 0 .../dot2k}/trace.h | 0 8 files changed, 24 insertions(+), 11 deletions(-) rename tools/verification/rvgen/{dot2k_templates => templates}/Kconfig (100%) rename tools/verification/rvgen/{dot2k_templates/Kconfig_container => templates/container/Kconfig} (100%) rename tools/verification/rvgen/{dot2k_templates/main_container.c => templates/container/main.c} (100%) rename tools/verification/rvgen/{dot2k_templates/main_container.h => templates/container/main.h} (100%) rename tools/verification/rvgen/{dot2k_templates => templates/dot2k}/main.c (100%) rename tools/verification/rvgen/{dot2k_templates => templates/dot2k}/trace.h (100%)