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>
This commit is contained in:
Daniel P. Berrange 2016-10-04 14:35:59 +01:00 committed by Stefan Hajnoczi
parent 0bc6484d58
commit 80dd5c4918
21 changed files with 73 additions and 55 deletions

View file

@ -15,6 +15,8 @@ __email__ = "stefanha@linux.vnet.ibm.com"
import sys
import getopt
import os.path
import re
from tracetool import error_write, out
import tracetool.backend
@ -60,6 +62,15 @@ Options:
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 @@ def main(args):
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))