From b73e8bd414b70f7ee63474cbddce0fb809e56a5d Mon Sep 17 00:00:00 2001 From: "Dr. David Alan Gilbert" Date: Tue, 7 Oct 2014 15:12:41 +0100 Subject: [PATCH 1/2] Tracing docs fix configure option and description Fix the example trace configure option. Update the text to say that multiple backends are allowed and what happens when multiple backends are enabled. Signed-off-by: Dr. David Alan Gilbert Message-id: 1412691161-31785-1-git-send-email-dgilbert@redhat.com Signed-off-by: Stefan Hajnoczi --- docs/tracing.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/tracing.txt b/docs/tracing.txt index 7d38926394..7117c5e7d6 100644 --- a/docs/tracing.txt +++ b/docs/tracing.txt @@ -139,12 +139,12 @@ events are not tightly coupled to a specific trace backend, such as LTTng or SystemTap. Support for trace backends can be added by extending the "tracetool" script. -The trace backend is chosen at configure time and only one trace backend can -be built into the binary: +The trace backends are chosen at configure time: - ./configure --trace-backends=simple + ./configure --enable-trace-backends=simple For a list of supported trace backends, try ./configure --help or see below. +If multiple backends are enabled, the trace is sent to them all. The following subsections describe the supported trace backends. From 776ec96f790e2c943c13313d8ecab4713b47ab65 Mon Sep 17 00:00:00 2001 From: Christoph Seifert Date: Sun, 2 Nov 2014 22:37:59 +0100 Subject: [PATCH 2/2] Tracing: Fix simpletrace.py error on tcg enabled binary traces simpletrace.py does not recognize the tcg option while reading trace-events file. In result simpletrace does not work on binary traces and tcg enabled events. Moved transformation of tcg enabled events to _read_events() which is used by simpletrace. Signed-off-by: Christoph Seifert Signed-off-by: Stefan Hajnoczi --- scripts/tracetool/__init__.py | 67 +++++++++++++++++------------------ 1 file changed, 33 insertions(+), 34 deletions(-) diff --git a/scripts/tracetool/__init__.py b/scripts/tracetool/__init__.py index 3d5743f93e..181675f00e 100644 --- a/scripts/tracetool/__init__.py +++ b/scripts/tracetool/__init__.py @@ -253,14 +253,44 @@ class Event(object): def _read_events(fobj): - res = [] + events = [] for line in fobj: if not line.strip(): continue if line.lstrip().startswith('#'): continue - res.append(Event.build(line)) - return res + + event = Event.build(line) + + # transform TCG-enabled events + if "tcg" not in event.properties: + events.append(event) + else: + event_trans = event.copy() + event_trans.name += "_trans" + event_trans.properties += ["tcg-trans"] + event_trans.fmt = event.fmt[0] + args_trans = [] + for atrans, aorig in zip( + event_trans.transform(tracetool.transform.TCG_2_HOST).args, + event.args): + if atrans == aorig: + args_trans.append(atrans) + event_trans.args = Arguments(args_trans) + event_trans = event_trans.copy() + + event_exec = event.copy() + event_exec.name += "_exec" + event_exec.properties += ["tcg-exec"] + event_exec.fmt = event.fmt[1] + event_exec = event_exec.transform(tracetool.transform.TCG_2_HOST) + + new_event = [event_trans, event_exec] + event.event_trans, event.event_exec = new_event + + events.extend(new_event) + + return events class TracetoolError (Exception): @@ -333,35 +363,4 @@ def generate(fevents, format, backends, events = _read_events(fevents) - # transform TCG-enabled events - new_events = [] - for event in events: - if "tcg" not in event.properties: - new_events.append(event) - else: - event_trans = event.copy() - event_trans.name += "_trans" - event_trans.properties += ["tcg-trans"] - event_trans.fmt = event.fmt[0] - args_trans = [] - for atrans, aorig in zip( - event_trans.transform(tracetool.transform.TCG_2_HOST).args, - event.args): - if atrans == aorig: - args_trans.append(atrans) - event_trans.args = Arguments(args_trans) - event_trans = event_trans.copy() - - event_exec = event.copy() - event_exec.name += "_exec" - event_exec.properties += ["tcg-exec"] - event_exec.fmt = event.fmt[1] - event_exec = event_exec.transform(tracetool.transform.TCG_2_HOST) - - new_event = [event_trans, event_exec] - event.event_trans, event.event_exec = new_event - - new_events.extend(new_event) - events = new_events - tracetool.format.generate(events, format, backend)