[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH for-2.8 v1 15/60] trace: introduce a formal group na
From: |
Daniel P. Berrange |
Subject: |
[Qemu-devel] [PATCH for-2.8 v1 15/60] trace: introduce a formal group name for trace events |
Date: |
Tue, 9 Aug 2016 16:31:43 +0100 |
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.
Signed-off-by: Daniel P. Berrange <address@hidden>
---
hw/usb/hcd-ohci.c | 6 +++--
scripts/tracetool.py | 10 ++++++--
scripts/tracetool/__init__.py | 10 ++++++--
scripts/tracetool/backend/__init__.py | 12 ++++-----
scripts/tracetool/backend/dtrace.py | 4 +--
scripts/tracetool/backend/ftrace.py | 7 +++---
scripts/tracetool/backend/log.py | 6 ++---
scripts/tracetool/backend/simple.py | 10 ++++----
scripts/tracetool/backend/ust.py | 4 +--
scripts/tracetool/format/__init__.py | 4 +--
scripts/tracetool/format/c.py | 23 +++++++++--------
scripts/tracetool/format/d.py | 2 +-
scripts/tracetool/format/h.py | 32 ++++++++++++------------
scripts/tracetool/format/simpletrace_stap.py | 2 +-
scripts/tracetool/format/stap.py | 2 +-
scripts/tracetool/format/tcg_h.py | 2 +-
scripts/tracetool/format/tcg_helper_c.py | 2 +-
scripts/tracetool/format/tcg_helper_h.py | 2 +-
scripts/tracetool/format/tcg_helper_wrapper_h.py | 2 +-
scripts/tracetool/format/ust_events_c.py | 2 +-
scripts/tracetool/format/ust_events_h.py | 8 +++---
21 files changed, 85 insertions(+), 67 deletions(-)
diff --git a/hw/usb/hcd-ohci.c b/hw/usb/hcd-ohci.c
index 87508a7..43b5181 100644
--- a/hw/usb/hcd-ohci.c
+++ b/hw/usb/hcd-ohci.c
@@ -937,8 +937,10 @@ static int ohci_service_iso_td(OHCIState *ohci, struct
ohci_ed *ed,
#ifdef trace_event_get_state
static void ohci_td_pkt(const char *msg, const uint8_t *buf, size_t len)
{
- bool print16 = !!trace_event_get_state(dstate,
TRACE_USB_OHCI_TD_PKT_SHORT);
- bool printall = !!trace_event_get_state(dstate,
TRACE_USB_OHCI_TD_PKT_FULL);
+ bool print16 = !!trace_event_get_state(common_dstate,
+ TRACE_USB_OHCI_TD_PKT_SHORT);
+ bool printall = !!trace_event_get_state(common_dstate,
+ TRACE_USB_OHCI_TD_PKT_FULL);
const int width = 16;
int i;
char tmp[3 * width + 1];
diff --git a/scripts/tracetool.py b/scripts/tracetool.py
index 7b82959..1ce8799 100755
--- a/scripts/tracetool.py
+++ b/scripts/tracetool.py
@@ -44,6 +44,7 @@ Options:
--help This help message.
--list-backends Print list of available backends.
--check-backends Check if the given backend is valid.
+ --group <name> Name of the event group
--binary <path> Full path to QEMU binary.
--target-type <type> QEMU emulator target type ('system' or 'user').
--target-name <name> QEMU emulator target name.
@@ -67,7 +68,8 @@ def main(args):
long_opts = ["backends=", "format=", "help", "list-backends",
"check-backends"]
- long_opts += ["binary=", "target-type=", "target-name=", "probe-prefix="]
+ long_opts += ["binary=", "target-type=", "target-name=", "probe-prefix=",
+ "group="]
try:
opts, args = getopt.getopt(args[1:], "", long_opts)
@@ -81,6 +83,7 @@ def main(args):
target_type = None
target_name = None
probe_prefix = None
+ group = None
for opt, arg in opts:
if opt == "--help":
error_opt()
@@ -105,6 +108,8 @@ def main(args):
target_name = arg
elif opt == '--probe-prefix':
probe_prefix = arg
+ elif opt == '--group':
+ group = arg
else:
error_opt("unhandled option: %s" % opt)
@@ -131,7 +136,8 @@ def main(args):
try:
tracetool.generate(sys.stdin, arg_format, arg_backends,
- binary=binary, probe_prefix=probe_prefix)
+ binary=binary, probe_prefix=probe_prefix,
+ group=group)
except tracetool.TracetoolError as e:
error_opt(str(e))
diff --git a/scripts/tracetool/__init__.py b/scripts/tracetool/__init__.py
index be24039..aebabaf 100644
--- a/scripts/tracetool/__init__.py
+++ b/scripts/tracetool/__init__.py
@@ -353,7 +353,8 @@ def try_import(mod_name, attr_name=None, attr_default=None):
def generate(fevents, format, backends,
- binary=None, probe_prefix=None):
+ binary=None, probe_prefix=None,
+ group=None):
"""Generate the output for the given (format, backends) pair.
Parameters
@@ -368,6 +369,8 @@ def generate(fevents, format, backends,
See tracetool.backend.dtrace.BINARY.
probe_prefix : str or None
See tracetool.backend.dtrace.PROBEPREFIX.
+ group: str
+ Name of the tracing group
"""
# fix strange python error (UnboundLocalError tracetool)
import tracetool
@@ -378,6 +381,9 @@ def generate(fevents, format, backends,
if not tracetool.format.exists(format):
raise TracetoolError("unknown format: %s" % format)
+ if group is None:
+ group = "common"
+
if len(backends) is 0:
raise TracetoolError("no backends specified")
for backend in backends:
@@ -391,4 +397,4 @@ def generate(fevents, format, backends,
events = _read_events(fevents)
- tracetool.format.generate(events, format, backend)
+ tracetool.format.generate(events, format, backend, group)
diff --git a/scripts/tracetool/backend/__init__.py
b/scripts/tracetool/backend/__init__.py
index d4b6dab..f735a25 100644
--- a/scripts/tracetool/backend/__init__.py
+++ b/scripts/tracetool/backend/__init__.py
@@ -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)
diff --git a/scripts/tracetool/backend/dtrace.py
b/scripts/tracetool/backend/dtrace.py
index ab9ecfa..79505c6 100644
--- a/scripts/tracetool/backend/dtrace.py
+++ b/scripts/tracetool/backend/dtrace.py
@@ -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()))
diff --git a/scripts/tracetool/backend/ftrace.py
b/scripts/tracetool/backend/ftrace.py
index 80dcf30..9bda5f9 100644
--- a/scripts/tracetool/backend/ftrace.py
+++ b/scripts/tracetool/backend/ftrace.py
@@ -19,13 +19,13 @@ from tracetool import out
PUBLIC = True
-def generate_h_begin(events):
+def generate_h_begin(events, group):
out('#include "trace/ftrace.h"',
'#include "trace/control.h"',
'')
-def generate_h(event):
+def generate_h(event, group):
argnames = ", ".join(event.args.names())
if len(event.args) > 0:
argnames = ", " + argnames
@@ -34,13 +34,14 @@ def generate_h(event):
' char ftrace_buf[MAX_TRACE_STRLEN];',
' int unused __attribute__ ((unused));',
' int trlen;',
- ' if (trace_event_get_state(%(event_id)s)) {',
+ ' if (trace_event_get_state(%(group)s_dstate,
%(event_id)s)) {',
' trlen = snprintf(ftrace_buf, MAX_TRACE_STRLEN,',
' "%(name)s " %(fmt)s "\\n"
%(argnames)s);',
' trlen = MIN(trlen, MAX_TRACE_STRLEN - 1);',
' unused = write(trace_marker_fd, ftrace_buf, trlen);',
' }',
' }',
+ group=group.lower(),
name=event.name,
args=event.args,
event_id="TRACE_" + event.name.upper(),
diff --git a/scripts/tracetool/backend/log.py b/scripts/tracetool/backend/log.py
index b3ff064..8438b83 100644
--- a/scripts/tracetool/backend/log.py
+++ b/scripts/tracetool/backend/log.py
@@ -19,13 +19,13 @@ from tracetool import out
PUBLIC = True
-def generate_h_begin(events):
+def generate_h_begin(events, group):
out('#include "trace/control.h"',
'#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
@@ -34,7 +34,7 @@ def generate_h(event):
# already checked on the generic format code
cond = "true"
else:
- cond = "trace_event_get_state(%s)" % ("TRACE_" + event.name.upper())
+ cond = "trace_event_get_state(%s_dstate, %s)" % (group.lower(),
"TRACE_" + event.name.upper())
out(' if (%(cond)s) {',
' struct timeval _now;',
diff --git a/scripts/tracetool/backend/simple.py
b/scripts/tracetool/backend/simple.py
index c2a8468..8c27b68 100644
--- a/scripts/tracetool/backend/simple.py
+++ b/scripts/tracetool/backend/simple.py
@@ -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;',
@@ -73,7 +73,7 @@ def generate_c(event):
# already checked on the generic format code
cond = "true"
else:
- cond = "trace_event_get_state(dstate, %s)" % event_id
+ cond = "trace_event_get_state(%s_dstate, %s)" % (group.lower(),
event_id)
out('',
' if (!%(cond)s) {',
diff --git a/scripts/tracetool/backend/ust.py b/scripts/tracetool/backend/ust.py
index ed4c227..4594db6 100644
--- a/scripts/tracetool/backend/ust.py
+++ b/scripts/tracetool/backend/ust.py
@@ -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
diff --git a/scripts/tracetool/format/__init__.py
b/scripts/tracetool/format/__init__.py
index 812570f..cf6e0e2 100644
--- a/scripts/tracetool/format/__init__.py
+++ b/scripts/tracetool/format/__init__.py
@@ -74,7 +74,7 @@ def exists(name):
return tracetool.try_import("tracetool.format." + name)[1]
-def generate(events, format, backend):
+def generate(events, format, backend, group):
if not exists(format):
raise ValueError("unknown format: %s" % format)
format = format.replace("-", "_")
@@ -82,4 +82,4 @@ def generate(events, format, backend):
"generate")[1]
if func is None:
raise AttributeError("format has no 'generate': %s" % format)
- func(events, backend)
+ func(events, backend, group)
diff --git a/scripts/tracetool/format/c.py b/scripts/tracetool/format/c.py
index d496109..d98785d 100644
--- a/scripts/tracetool/format/c.py
+++ b/scripts/tracetool/format/c.py
@@ -16,7 +16,7 @@ __email__ = "address@hidden"
from tracetool import out
-def generate(events, backend):
+def generate(events, backend, group):
active_events = [e for e in events
if "disable" not in e.properties]
@@ -26,10 +26,10 @@ def generate(events, backend):
'#include "trace.h"',
'')
- out('uint16_t dstate[TRACE_EVENT_COUNT];')
- out('bool dstate_init[TRACE_EVENT_COUNT];')
+ out('uint16_t %s_dstate[TRACE_%s_EVENT_COUNT];' % (group.lower(),
group.upper()))
+ out('bool %s_dstate_init[TRACE_%s_EVENT_COUNT];' % (group.lower(),
group.upper()))
- out('static TraceEvent trace_events[TRACE_EVENT_COUNT] = {')
+ out('static TraceEvent %s_trace_events[TRACE_%s_EVENT_COUNT] = {' %
(group.lower(), group.upper()))
for e in events:
if "vcpu" in e.properties:
@@ -47,13 +47,16 @@ def generate(events, backend):
out('};',
'')
- out('void trace_register_events(void)',
+ out('void trace_%s_register_events(void)' % group.lower(),
'{',
- ' trace_event_register_group(trace_events, TRACE_EVENT_COUNT,
dstate, dstate_init);',
+ ' trace_event_register_group(%s_trace_events,' % group.lower(),
+ ' TRACE_%s_EVENT_COUNT,' % group.upper(),
+ ' %s_dstate,' % group.lower(),
+ ' %s_dstate_init);' % group.lower(),
'}',
- 'trace_init(trace_register_events)')
+ 'trace_init(trace_%s_register_events)' % group.lower())
- backend.generate_begin(active_events)
+ backend.generate_begin(active_events, group)
for event in active_events:
- backend.generate(event)
- backend.generate_end(active_events)
+ backend.generate(event, group)
+ backend.generate_end(active_events, group)
diff --git a/scripts/tracetool/format/d.py b/scripts/tracetool/format/d.py
index c77d5b7..78397c2 100644
--- a/scripts/tracetool/format/d.py
+++ b/scripts/tracetool/format/d.py
@@ -29,7 +29,7 @@ RESERVED_WORDS = (
)
-def generate(events, backend):
+def generate(events, backend, group):
events = [e for e in events
if "disable" not in e.properties]
diff --git a/scripts/tracetool/format/h.py b/scripts/tracetool/format/h.py
index 4b53ee2..25ffe2b 100644
--- a/scripts/tracetool/format/h.py
+++ b/scripts/tracetool/format/h.py
@@ -16,34 +16,34 @@ __email__ = "address@hidden"
from tracetool import out
-def generate(events, backend):
+def generate(events, backend, group):
out('/* This file is autogenerated by tracetool, do not edit. */',
'',
- '#ifndef TRACE__GENERATED_TRACERS_H',
- '#define TRACE__GENERATED_TRACERS_H',
+ '#ifndef TRACE_%s_GENERATED_TRACERS_H' % group.upper(),
+ '#define TRACE_%s_GENERATED_TRACERS_H' % group.upper(),
'',
'#include "qemu-common.h"',
'#include "trace/control.h"',
'')
# event identifiers
- out('typedef enum {')
+ out('enum {')
for e in events:
out(' TRACE_%s,' % e.name.upper())
- out(' TRACE_EVENT_COUNT',
- '} TraceEventID;')
+ out(' TRACE_%s_EVENT_COUNT' % group.upper(),
+ '};')
# per-vCPU event identifiers
- out('typedef enum {')
+ out('enum {')
for e in events:
if "vcpu" in e.properties:
out(' TRACE_VCPU_%s,' % e.name.upper())
- out(' TRACE_VCPU_EVENT_COUNT',
- '} TraceEventVCPUID;')
+ out(' TRACE_%s_VCPU_EVENT_COUNT' % group.upper(),
+ '};')
# static state
for e in events:
@@ -58,12 +58,12 @@ def generate(events, backend):
enabled=enabled)
out('#define TRACE_%s_ENABLED %d' % (e.name.upper(), enabled))
- out('extern uint16_t dstate[TRACE_EVENT_COUNT];')
- out('extern bool dstate_init[TRACE_EVENT_COUNT];')
+ out('extern uint16_t %s_dstate[TRACE_%s_EVENT_COUNT];' % (group.lower(),
group.upper()))
+ out('extern bool %s_dstate_init[TRACE_%s_EVENT_COUNT];' % (group.lower(),
group.upper()))
- out('void trace_register_events(void);')
+ out('void trace_%s_register_events(void);' % group.lower())
- backend.generate_begin(events)
+ backend.generate_begin(events, group)
for e in events:
if "vcpu" in e.properties:
@@ -86,11 +86,11 @@ def generate(events, backend):
cond=cond)
if "disable" not in e.properties:
- backend.generate(e)
+ backend.generate(e, group)
out(' }',
'}')
- backend.generate_end(events)
+ backend.generate_end(events, group)
- out('#endif /* TRACE__GENERATED_TRACERS_H */')
+ out('#endif /* TRACE_%s_GENERATED_TRACERS_H */' % group.upper())
diff --git a/scripts/tracetool/format/simpletrace_stap.py
b/scripts/tracetool/format/simpletrace_stap.py
index 7e44bc1..c8b3850 100644
--- a/scripts/tracetool/format/simpletrace_stap.py
+++ b/scripts/tracetool/format/simpletrace_stap.py
@@ -19,7 +19,7 @@ from tracetool.backend.simple import is_string
from tracetool.format.stap import stap_escape
-def generate(events, backend):
+def generate(events, backend, group):
out('/* This file is autogenerated by tracetool, do not edit. */',
'')
diff --git a/scripts/tracetool/format/stap.py b/scripts/tracetool/format/stap.py
index 9e780f1..e8ef3e7 100644
--- a/scripts/tracetool/format/stap.py
+++ b/scripts/tracetool/format/stap.py
@@ -34,7 +34,7 @@ def stap_escape(identifier):
return identifier
-def generate(events, backend):
+def generate(events, backend, group):
events = [e for e in events
if "disable" not in e.properties]
diff --git a/scripts/tracetool/format/tcg_h.py
b/scripts/tracetool/format/tcg_h.py
index e2331f2..628388a 100644
--- a/scripts/tracetool/format/tcg_h.py
+++ b/scripts/tracetool/format/tcg_h.py
@@ -27,7 +27,7 @@ def vcpu_transform_args(args):
])
-def generate(events, backend):
+def generate(events, backend, group):
out('/* This file is autogenerated by tracetool, do not edit. */',
'/* You must include this file after the inclusion of helper.h */',
'',
diff --git a/scripts/tracetool/format/tcg_helper_c.py
b/scripts/tracetool/format/tcg_helper_c.py
index e3485b7..cc26e03 100644
--- a/scripts/tracetool/format/tcg_helper_c.py
+++ b/scripts/tracetool/format/tcg_helper_c.py
@@ -40,7 +40,7 @@ def vcpu_transform_args(args, mode):
assert False
-def generate(events, backend):
+def generate(events, backend, group):
events = [e for e in events
if "disable" not in e.properties]
diff --git a/scripts/tracetool/format/tcg_helper_h.py
b/scripts/tracetool/format/tcg_helper_h.py
index dc76c15..6b184b6 100644
--- a/scripts/tracetool/format/tcg_helper_h.py
+++ b/scripts/tracetool/format/tcg_helper_h.py
@@ -18,7 +18,7 @@ from tracetool.transform import *
import tracetool.vcpu
-def generate(events, backend):
+def generate(events, backend, group):
events = [e for e in events
if "disable" not in e.properties]
diff --git a/scripts/tracetool/format/tcg_helper_wrapper_h.py
b/scripts/tracetool/format/tcg_helper_wrapper_h.py
index 020f442..ff53447 100644
--- a/scripts/tracetool/format/tcg_helper_wrapper_h.py
+++ b/scripts/tracetool/format/tcg_helper_wrapper_h.py
@@ -18,7 +18,7 @@ from tracetool.transform import *
import tracetool.vcpu
-def generate(events, backend):
+def generate(events, backend, group):
events = [e for e in events
if "disable" not in e.properties]
diff --git a/scripts/tracetool/format/ust_events_c.py
b/scripts/tracetool/format/ust_events_c.py
index 9967c7a..cd87d8a 100644
--- a/scripts/tracetool/format/ust_events_c.py
+++ b/scripts/tracetool/format/ust_events_c.py
@@ -16,7 +16,7 @@ __email__ = "address@hidden"
from tracetool import out
-def generate(events, backend):
+def generate(events, backend, group):
events = [e for e in events
if "disabled" not in e.properties]
diff --git a/scripts/tracetool/format/ust_events_h.py
b/scripts/tracetool/format/ust_events_h.py
index 3e8a7cd..00b69d9 100644
--- a/scripts/tracetool/format/ust_events_h.py
+++ b/scripts/tracetool/format/ust_events_h.py
@@ -16,7 +16,7 @@ __email__ = "address@hidden"
from tracetool import out
-def generate(events, backend):
+def generate(events, backend, group):
events = [e for e in events
if "disabled" not in e.properties]
@@ -28,8 +28,8 @@ def generate(events, backend):
'#undef TRACEPOINT_INCLUDE_FILE',
'#define TRACEPOINT_INCLUDE_FILE ./generated-ust-provider.h',
'',
- '#if !defined (TRACE__GENERATED_UST_H) ||
defined(TRACEPOINT_HEADER_MULTI_READ)',
- '#define TRACE__GENERATED_UST_H',
+ '#if !defined (TRACE_%s_GENERATED_UST_H) ||
defined(TRACEPOINT_HEADER_MULTI_READ)' % group.upper(),
+ '#define TRACE_%s_GENERATED_UST_H' % group.upper(),
'',
'#include "qemu-common.h"',
'#include <lttng/tracepoint.h>',
@@ -94,7 +94,7 @@ def generate(events, backend):
'',
name=e.name)
- out('#endif /* TRACE__GENERATED_UST_H */',
+ out('#endif /* TRACE_%s_GENERATED_UST_H */' % group.upper(),
'',
'/* This part must be outside ifdef protection */',
'#include <lttng/tracepoint-event.h>')
--
2.7.4
- Re: [Qemu-devel] [PATCH for-2.8 v1 11/60] trace: remove use of event ID enums from APIs, (continued)
[Qemu-devel] [PATCH for-2.8 v1 10/60] trace: remove fixed global event state arrays, Daniel P. Berrange, 2016/08/09
[Qemu-devel] [PATCH for-2.8 v1 12/60] trace: use -1 instead of TRACE_VCPU_EVENT_COUNT as magic value, Daniel P. Berrange, 2016/08/09
[Qemu-devel] [PATCH for-2.8 v1 14/60] trace: get rid of generated-events.h/generated-events.c, Daniel P. Berrange, 2016/08/09
[Qemu-devel] [PATCH for-2.8 v1 13/60] trace: remove generated-events.h from many includes, Daniel P. Berrange, 2016/08/09
[Qemu-devel] [PATCH for-2.8 v1 19/60] trace: switch util/ directory to modular trace.h file, Daniel P. Berrange, 2016/08/09
[Qemu-devel] [PATCH for-2.8 v1 15/60] trace: introduce a formal group name for trace events,
Daniel P. Berrange <=
[Qemu-devel] [PATCH for-2.8 v1 17/60] trace: introduce some Makefile rules for module code gen, Daniel P. Berrange, 2016/08/09
[Qemu-devel] [PATCH for-2.8 v1 20/60] trace: switch crypto/ directory to modular trace.h file, Daniel P. Berrange, 2016/08/09
[Qemu-devel] [PATCH for-2.8 v1 16/60] trace: introduce ID range offsets per trace-events file, Daniel P. Berrange, 2016/08/09
[Qemu-devel] [PATCH for-2.8 v1 22/60] trace: switch block/ directory to modular trace.h file, Daniel P. Berrange, 2016/08/09
[Qemu-devel] [PATCH for-2.8 v1 24/60] trace: switch hw/char/ directory to modular trace.h file, Daniel P. Berrange, 2016/08/09
[Qemu-devel] [PATCH for-2.8 v1 18/60] trace: switch io/ directory to modular trace.h file, Daniel P. Berrange, 2016/08/09
[Qemu-devel] [PATCH for-2.8 v1 26/60] trace: switch hw/net/ directory to modular trace.h file, Daniel P. Berrange, 2016/08/09
[Qemu-devel] [PATCH for-2.8 v1 25/60] trace: switch hw/intc/ directory to modular trace.h file, Daniel P. Berrange, 2016/08/09