diff options
| author | Peter Maydell <peter.maydell@linaro.org> | 2014-05-08 12:38:01 +0100 |
|---|---|---|
| committer | Peter Maydell <peter.maydell@linaro.org> | 2014-05-08 12:38:01 +0100 |
| commit | 43cbeffb19877c62cbe0aaf08b2f235d98d71340 (patch) | |
| tree | 90a1d70eb7a165a8ddc923169651da2ab68edaac /scripts/tracetool/__init__.py | |
| parent | 6b342cc9c872e82620fdd32730cd92affa8a19b3 (diff) | |
| parent | e00e36fb913217d49f57cc19d8d605270dd82bc5 (diff) | |
| download | focaccia-qemu-43cbeffb19877c62cbe0aaf08b2f235d98d71340.tar.gz focaccia-qemu-43cbeffb19877c62cbe0aaf08b2f235d98d71340.zip | |
Merge remote-tracking branch 'remotes/stefanha/tags/tracing-pull-request' into staging
Tracing pull request # gpg: Signature made Wed 07 May 2014 18:14:02 BST using RSA key ID 81AB73C8 # gpg: Good signature from "Stefan Hajnoczi <stefanha@redhat.com>" # gpg: aka "Stefan Hajnoczi <stefanha@gmail.com>" * remotes/stefanha/tags/tracing-pull-request: configure: Show trace output file conditionally trace: [tracetool] Minimize the amount of per-backend code trace: [simple] Bump up log version number trace: [tracetool] Change format docs to point to the generated file trace: [tracetool] Show list of frontends and backends sorted by name trace: [tracetool] Cosmetic changes trace: [tracetool] Spacing changes trace: [tracetool] Add methods 'Event.copy' and 'Arguments.copy' trace: [tracetool] Add method 'Event.api' to build event names Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'scripts/tracetool/__init__.py')
| -rw-r--r-- | scripts/tracetool/__init__.py | 53 |
1 files changed, 28 insertions, 25 deletions
diff --git a/scripts/tracetool/__init__.py b/scripts/tracetool/__init__.py index 175df08005..eccf5524f3 100644 --- a/scripts/tracetool/__init__.py +++ b/scripts/tracetool/__init__.py @@ -6,7 +6,7 @@ Machinery for generating tracing-related intermediate files. """ __author__ = "Lluís Vilanova <vilanova@ac.upc.edu>" -__copyright__ = "Copyright 2012, Lluís Vilanova <vilanova@ac.upc.edu>" +__copyright__ = "Copyright 2012-2014, Lluís Vilanova <vilanova@ac.upc.edu>" __license__ = "GPL version 2 or (at your option) any later version" __maintainer__ = "Stefan Hajnoczi" @@ -52,6 +52,10 @@ class Arguments: """ self._args = args + def copy(self): + """Create a new copy.""" + return Arguments(list(self._args)) + @staticmethod def build(arg_str): """Build and Arguments instance from an argument string. @@ -144,7 +148,13 @@ class Event(object): unknown_props = set(self.properties) - self._VALID_PROPS if len(unknown_props) > 0: - raise ValueError("Unknown properties: %s" % ", ".join(unknown_props)) + raise ValueError("Unknown properties: %s" + % ", ".join(unknown_props)) + + def copy(self): + """Create a new copy.""" + return Event(self.name, list(self.properties), self.fmt, + self.args.copy(), self) @staticmethod def build(line_str): @@ -173,6 +183,14 @@ class Event(object): self.args, self.fmt) + QEMU_TRACE = "trace_%(name)s" + + def api(self, fmt=None): + if fmt is None: + fmt = Event.QEMU_TRACE + return fmt % {"name": self.name} + + def _read_events(fobj): res = [] for line in fobj: @@ -189,7 +207,7 @@ class TracetoolError (Exception): pass -def try_import(mod_name, attr_name = None, attr_default = None): +def try_import(mod_name, attr_name=None, attr_default=None): """Try to import a module and get an attribute from it. Parameters @@ -216,7 +234,7 @@ def try_import(mod_name, attr_name = None, attr_default = None): def generate(fevents, format, backend, - binary = None, probe_prefix = None): + binary=None, probe_prefix=None): """Generate the output for the given (format, backend) pair. Parameters @@ -238,20 +256,17 @@ def generate(fevents, format, backend, format = str(format) if len(format) is 0: raise TracetoolError("format not set") - mformat = format.replace("-", "_") - if not tracetool.format.exists(mformat): + if not tracetool.format.exists(format): raise TracetoolError("unknown format: %s" % format) + format = format.replace("-", "_") backend = str(backend) if len(backend) is 0: raise TracetoolError("backend not set") - mbackend = backend.replace("-", "_") - if not tracetool.backend.exists(mbackend): + if not tracetool.backend.exists(backend): raise TracetoolError("unknown backend: %s" % backend) - - if not tracetool.backend.compatible(mbackend, mformat): - raise TracetoolError("backend '%s' not compatible with format '%s'" % - (backend, format)) + backend = backend.replace("-", "_") + backend = tracetool.backend.Wrapper(backend, format) import tracetool.backend.dtrace tracetool.backend.dtrace.BINARY = binary @@ -259,16 +274,4 @@ def generate(fevents, format, backend, events = _read_events(fevents) - if backend == "nop": - ( e.properies.add("disable") for e in events ) - - tracetool.format.generate_begin(mformat, events) - tracetool.backend.generate("nop", format, - [ e - for e in events - if "disable" in e.properties ]) - tracetool.backend.generate(backend, format, - [ e - for e in events - if "disable" not in e.properties ]) - tracetool.format.generate_end(mformat, events) + tracetool.format.generate(events, format, backend) |