]> git.proxmox.com Git - mirror_qemu.git/blame - scripts/tracetool.py
tracetool: Add support for the 'ust' backend
[mirror_qemu.git] / scripts / tracetool.py
CommitLineData
650ab98d
LV
1#!/usr/bin/env python
2# -*- coding: utf-8 -*-
3
4"""
5Command-line wrapper for the tracetool machinery.
6"""
7
8__author__ = "Lluís Vilanova <vilanova@ac.upc.edu>"
9__copyright__ = "Copyright 2012, Lluís Vilanova <vilanova@ac.upc.edu>"
10__license__ = "GPL version 2 or (at your option) any later version"
11
12__maintainer__ = "Stefan Hajnoczi"
13__email__ = "stefanha@linux.vnet.ibm.com"
14
15
16import sys
17import getopt
18
19from tracetool import error_write, out
20import tracetool.backend
21import tracetool.format
22
23
24_SCRIPT = ""
25
26def error_opt(msg = None):
27 if msg is not None:
28 error_write("Error: " + msg + "\n")
29
30 backend_descr = "\n".join([ " %-15s %s" % (n, d)
31 for n,d in tracetool.backend.get_list() ])
32 format_descr = "\n".join([ " %-15s %s" % (n, d)
33 for n,d in tracetool.format.get_list() ])
34 error_write("""\
35Usage: %(script)s --format=<format> --backend=<backend> [<options>]
36
37Backends:
38%(backends)s
39
40Formats:
41%(formats)s
42
43Options:
44 --help This help message.
45 --list-backends Print list of available backends.
46 --check-backend Check if the given backend is valid.
47""" % {
48 "script" : _SCRIPT,
49 "backends" : backend_descr,
50 "formats" : format_descr,
51 })
52
53 if msg is None:
54 sys.exit(0)
55 else:
56 sys.exit(1)
57
58
59def main(args):
60 global _SCRIPT
61 _SCRIPT = args[0]
62
63 long_opts = [ "backend=", "format=", "help", "list-backends", "check-backend" ]
64 long_opts += [ "binary=", "target-type=", "target-arch=", "probe-prefix=" ]
65
66 try:
67 opts, args = getopt.getopt(args[1:], "", long_opts)
68 except getopt.GetoptError as err:
69 error_opt(str(err))
70
71 check_backend = False
72 arg_backend = ""
73 arg_format = ""
74 for opt, arg in opts:
75 if opt == "--help":
76 error_opt()
77
78 elif opt == "--backend":
79 arg_backend = arg
80 elif opt == "--format":
81 arg_format = arg
82
83 elif opt == "--list-backends":
84 backends = tracetool.backend.get_list()
85 out(", ".join([ b for b,_ in backends ]))
86 sys.exit(0)
87 elif opt == "--check-backend":
88 check_backend = True
89
90 else:
91 error_opt("unhandled option: %s" % opt)
92
93 if arg_backend is None:
94 error_opt("backend not set")
95
96 if check_backend:
97 if tracetool.backend.exists(arg_backend):
98 sys.exit(0)
99 else:
100 sys.exit(1)
101
102 try:
103 tracetool.generate(sys.stdin, arg_format, arg_backend)
104 except tracetool.TracetoolError as e:
105 error_opt(str(e))
106
107if __name__ == "__main__":
108 main(sys.argv)