-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
__license__ = "GPL version 2 or (at your option) any later version"
__maintainer__ = "Stefan Hajnoczi"
-__email__ = "stefanha@linux.vnet.ibm.com"
+__email__ = "stefanha@redhat.com"
import sys
import getopt
-from tracetool import error_write, out
+from tracetool import error_write, out, out_open
import tracetool.backend
import tracetool.format
format_descr = "\n".join([ " %-15s %s" % (n, d)
for n,d in tracetool.format.get_list() ])
error_write("""\
-Usage: %(script)s --format=<format> --backends=<backends> [<options>]
+Usage: %(script)s --format=<format> --backends=<backends> [<options>] <trace-events> ... <output>
Backends:
%(backends)s
--binary <path> Full path to QEMU binary.
--target-type <type> QEMU emulator target type ('system' or 'user').
--target-name <name> QEMU emulator target name.
+ --group <name> Name of the event group
--probe-prefix <prefix> Prefix for dtrace probe names
(default: qemu-<target-type>-<target-name>).\
""" % {
else:
sys.exit(1)
-
def main(args):
global _SCRIPT
_SCRIPT = args[0]
long_opts = ["backends=", "format=", "help", "list-backends",
- "check-backends"]
+ "check-backends", "group="]
long_opts += ["binary=", "target-type=", "target-name=", "probe-prefix="]
try:
check_backends = False
arg_backends = []
arg_format = ""
+ arg_group = None
binary = None
target_type = None
target_name = None
elif opt == "--backends":
arg_backends = arg.split(",")
+ elif opt == "--group":
+ arg_group = arg
elif opt == "--format":
arg_format = arg
sys.exit(1)
sys.exit(0)
+ if arg_group is None:
+ error_opt("group name is required")
+
if arg_format == "stap":
if binary is None:
error_opt("--binary is required for SystemTAP tapset generator")
if probe_prefix is None:
probe_prefix = ".".join(["qemu", target_type, target_name])
+ if len(args) < 2:
+ error_opt("missing trace-events and output filepaths")
+ events = []
+ for arg in args[:-1]:
+ with open(arg, "r") as fh:
+ events.extend(tracetool.read_events(fh, arg))
+
+ out_open(args[-1])
+
try:
- tracetool.generate(sys.stdin, arg_format, arg_backends,
+ tracetool.generate(events, arg_group, arg_format, arg_backends,
binary=binary, probe_prefix=probe_prefix)
except tracetool.TracetoolError as e:
error_opt(str(e))