trace: introduce a formal group name for trace events
The declarations in the generated-tracers.h file are
assuming there's only ever going to be one instance
of this header, as they are not namespaced. When we
have one header per event group, if a single source
file needs to include multiple sets of trace events,
the symbols will all clash.
This change thus introduces a '--group NAME' arg to the
'tracetool' program. This will cause all the symbols in
the generated header files to be given a unique namespace.
If no group is given, the group name 'common' is used,
which is suitable for the current usage where there is
only one global trace-events file used for code generation.
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Reviewed-by: LluĂs Vilanova <vilanova@ac.upc.edu>
Message-id: 1475588159-30598-21-git-send-email-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
diff --git a/scripts/tracetool.py b/scripts/tracetool.py
index f66e767..629b259 100755
--- a/scripts/tracetool.py
+++ b/scripts/tracetool.py
@@ -15,6 +15,8 @@
import sys
import getopt
+import os.path
+import re
from tracetool import error_write, out
import tracetool.backend
@@ -60,6 +62,15 @@
else:
sys.exit(1)
+def make_group_name(filename):
+ dirname = os.path.realpath(os.path.dirname(filename))
+ basedir = os.path.join(os.path.dirname(__file__), os.pardir)
+ basedir = os.path.realpath(os.path.abspath(basedir))
+ dirname = dirname[len(basedir) + 1:]
+
+ if dirname == "":
+ return "common"
+ return re.sub(r"/|-", "_", dirname)
def main(args):
global _SCRIPT
@@ -134,8 +145,10 @@
with open(args[0], "r") as fh:
events = tracetool.read_events(fh)
+ group = make_group_name(args[0])
+
try:
- tracetool.generate(events, arg_format, arg_backends,
+ tracetool.generate(events, group, arg_format, arg_backends,
binary=binary, probe_prefix=probe_prefix)
except tracetool.TracetoolError as e:
error_opt(str(e))