]>
Commit | Line | Data |
---|---|---|
52ef093a LV |
1 | #!/usr/bin/env python |
2 | # -*- coding: utf-8 -*- | |
3 | ||
4 | """ | |
5 | DTrace/SystemTAP backend. | |
6 | """ | |
7 | ||
8 | __author__ = "Lluís Vilanova <vilanova@ac.upc.edu>" | |
1ff7b531 | 9 | __copyright__ = "Copyright 2012-2017, Lluís Vilanova <vilanova@ac.upc.edu>" |
52ef093a LV |
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 | ||
16 | from tracetool import out | |
17 | ||
18 | ||
93fba161 LV |
19 | PUBLIC = True |
20 | ||
21 | ||
52ef093a LV |
22 | PROBEPREFIX = None |
23 | ||
1dad2ce9 | 24 | def probeprefix(): |
52ef093a LV |
25 | if PROBEPREFIX is None: |
26 | raise ValueError("you must set PROBEPREFIX") | |
27 | return PROBEPREFIX | |
28 | ||
29 | ||
30 | BINARY = None | |
31 | ||
1dad2ce9 | 32 | def binary(): |
52ef093a LV |
33 | if BINARY is None: |
34 | raise ValueError("you must set BINARY") | |
35 | return BINARY | |
36 | ||
37 | ||
80dd5c49 | 38 | def generate_h_begin(events, group): |
0ab8ed18 DB |
39 | if group == "root": |
40 | header = "trace-dtrace-root.h" | |
41 | else: | |
42 | header = "trace-dtrace.h" | |
43 | ||
44 | out('#include "%s"' % header, | |
52ef093a LV |
45 | '') |
46 | ||
3932ef3f SH |
47 | # SystemTap defines <provider>_<name>_ENABLED() but other DTrace |
48 | # implementations might not. | |
49 | for e in events: | |
50 | out('#ifndef QEMU_%(uppername)s_ENABLED', | |
51 | '#define QEMU_%(uppername)s_ENABLED() true', | |
52 | '#endif', | |
53 | uppername=e.name.upper()) | |
1dad2ce9 | 54 | |
80dd5c49 | 55 | def generate_h(event, group): |
1ff7b531 | 56 | out(' QEMU_%(uppername)s(%(argnames)s);', |
1dad2ce9 LV |
57 | uppername=event.name.upper(), |
58 | argnames=", ".join(event.args.names())) | |
3932ef3f SH |
59 | |
60 | ||
61 | def generate_h_backend_dstate(event, group): | |
62 | out(' QEMU_%(uppername)s_ENABLED() || \\', | |
63 | uppername=event.name.upper()) |