Adding upstream version 1:10.0.2+ds.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
This commit is contained in:
parent
bf2768bd0f
commit
ea34ddeea6
37998 changed files with 9510514 additions and 0 deletions
140
scripts/tracetool.py
Executable file
140
scripts/tracetool.py
Executable file
|
@ -0,0 +1,140 @@
|
|||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
"""
|
||||
Command-line wrapper for the tracetool machinery.
|
||||
"""
|
||||
|
||||
__author__ = "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"
|
||||
__email__ = "stefanha@redhat.com"
|
||||
|
||||
|
||||
import sys
|
||||
import getopt
|
||||
|
||||
from tracetool import error_write, out, out_open
|
||||
import tracetool.backend
|
||||
import tracetool.format
|
||||
|
||||
|
||||
_SCRIPT = ""
|
||||
|
||||
def error_opt(msg = None):
|
||||
if msg is not None:
|
||||
error_write("Error: " + msg + "\n")
|
||||
|
||||
backend_descr = "\n".join([ " %-15s %s" % (n, d)
|
||||
for n,d in tracetool.backend.get_list() ])
|
||||
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>] <trace-events> ... <output>
|
||||
|
||||
Backends:
|
||||
%(backends)s
|
||||
|
||||
Formats:
|
||||
%(formats)s
|
||||
|
||||
Options:
|
||||
--help This help message.
|
||||
--list-backends Print list of available backends.
|
||||
--check-backends Check if the given backend is valid.
|
||||
--binary <path> Full path to QEMU binary (required for 'stap' backend).
|
||||
--group <name> Name of the event group.
|
||||
--probe-prefix <prefix> Prefix for dtrace probe names (required for 'stap' backend).
|
||||
""" % {
|
||||
"script" : _SCRIPT,
|
||||
"backends" : backend_descr,
|
||||
"formats" : format_descr,
|
||||
})
|
||||
|
||||
if msg is None:
|
||||
sys.exit(0)
|
||||
else:
|
||||
sys.exit(1)
|
||||
|
||||
def main(args):
|
||||
global _SCRIPT
|
||||
_SCRIPT = args[0]
|
||||
|
||||
long_opts = ["backends=", "format=", "help", "list-backends",
|
||||
"check-backends", "group="]
|
||||
long_opts += ["binary=", "probe-prefix="]
|
||||
|
||||
try:
|
||||
opts, args = getopt.getopt(args[1:], "", long_opts)
|
||||
except getopt.GetoptError as err:
|
||||
error_opt(str(err))
|
||||
|
||||
check_backends = False
|
||||
arg_backends = []
|
||||
arg_format = ""
|
||||
arg_group = None
|
||||
binary = None
|
||||
probe_prefix = None
|
||||
for opt, arg in opts:
|
||||
if opt == "--help":
|
||||
error_opt()
|
||||
|
||||
elif opt == "--backends":
|
||||
arg_backends = arg.split(",")
|
||||
elif opt == "--group":
|
||||
arg_group = arg
|
||||
elif opt == "--format":
|
||||
arg_format = arg
|
||||
|
||||
elif opt == "--list-backends":
|
||||
public_backends = tracetool.backend.get_list(only_public = True)
|
||||
out(", ".join([ b for b,_ in public_backends ]))
|
||||
sys.exit(0)
|
||||
elif opt == "--check-backends":
|
||||
check_backends = True
|
||||
|
||||
elif opt == "--binary":
|
||||
binary = arg
|
||||
elif opt == '--probe-prefix':
|
||||
probe_prefix = arg
|
||||
|
||||
else:
|
||||
error_opt("unhandled option: %s" % opt)
|
||||
|
||||
if len(arg_backends) == 0:
|
||||
error_opt("no backends specified")
|
||||
|
||||
if check_backends:
|
||||
for backend in arg_backends:
|
||||
if not tracetool.backend.exists(backend):
|
||||
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:
|
||||
error_opt("--probe-prefix is required for SystemTAP tapset generator")
|
||||
|
||||
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(events, arg_group, arg_format, arg_backends,
|
||||
binary=binary, probe_prefix=probe_prefix)
|
||||
except tracetool.TracetoolError as e:
|
||||
error_opt(str(e))
|
||||
|
||||
if __name__ == "__main__":
|
||||
main(sys.argv)
|
Loading…
Add table
Add a link
Reference in a new issue