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

@ -113,11 +113,11 @@ class Wrapper:
if func is not None:
func(*args, **kwargs)
def generate_begin(self, events):
self._run_function("generate_%s_begin", events)
def generate_begin(self, events, group):
self._run_function("generate_%s_begin", events, group)
def generate(self, event):
self._run_function("generate_%s", event)
def generate(self, event, group):
self._run_function("generate_%s", event, group)
def generate_end(self, events):
self._run_function("generate_%s_end", events)
def generate_end(self, events, group):
self._run_function("generate_%s_end", events, group)

View file

@ -35,12 +35,12 @@ def binary():
return BINARY
def generate_h_begin(events):
def generate_h_begin(events, group):
out('#include "trace/generated-tracers-dtrace.h"',
'')
def generate_h(event):
def generate_h(event, group):
out(' QEMU_%(uppername)s(%(argnames)s);',
uppername=event.name.upper(),
argnames=", ".join(event.args.names()))

View file

@ -19,12 +19,12 @@ from tracetool import out
PUBLIC = True
def generate_h_begin(events):
def generate_h_begin(events, group):
out('#include "trace/ftrace.h"',
'')
def generate_h(event):
def generate_h(event, group):
argnames = ", ".join(event.args.names())
if len(event.args) > 0:
argnames = ", " + argnames

View file

@ -19,12 +19,12 @@ from tracetool import out
PUBLIC = True
def generate_h_begin(events):
def generate_h_begin(events, group):
out('#include "qemu/log.h"',
'')
def generate_h(event):
def generate_h(event, group):
argnames = ", ".join(event.args.names())
if len(event.args) > 0:
argnames = ", " + argnames

View file

@ -27,7 +27,7 @@ def is_string(arg):
return False
def generate_h_begin(events):
def generate_h_begin(events, group):
for event in events:
out('void _simple_%(api)s(%(args)s);',
api=event.api(),
@ -35,13 +35,13 @@ def generate_h_begin(events):
out('')
def generate_h(event):
def generate_h(event, group):
out(' _simple_%(api)s(%(args)s);',
api=event.api(),
args=", ".join(event.args.names()))
def generate_c_begin(events):
def generate_c_begin(events, group):
out('#include "qemu/osdep.h"',
'#include "trace.h"',
'#include "trace/control.h"',
@ -49,7 +49,7 @@ def generate_c_begin(events):
'')
def generate_c(event):
def generate_c(event, group):
out('void _simple_%(api)s(%(args)s)',
'{',
' TraceBufferRecord rec;',

View file

@ -19,12 +19,12 @@ from tracetool import out
PUBLIC = True
def generate_h_begin(events):
def generate_h_begin(events, group):
out('#include <syslog.h>',
'')
def generate_h(event):
def generate_h(event, group):
argnames = ", ".join(event.args.names())
if len(event.args) > 0:
argnames = ", " + argnames

View file

@ -19,13 +19,13 @@ from tracetool import out
PUBLIC = True
def generate_h_begin(events):
def generate_h_begin(events, group):
out('#include <lttng/tracepoint.h>',
'#include "trace/generated-ust-provider.h"',
'')
def generate_h(event):
def generate_h(event, group):
argnames = ", ".join(event.args.names())
if len(event.args) > 0:
argnames = ", " + argnames