]>
Commit | Line | Data |
---|---|---|
5de7f9c8 LV |
1 | #!/usr/bin/env python |
2 | # -*- coding: utf-8 -*- | |
3 | ||
4 | """ | |
30b572ef | 5 | trace/generated-tracers.c |
5de7f9c8 LV |
6 | """ |
7 | ||
8 | __author__ = "Lluís Vilanova <vilanova@ac.upc.edu>" | |
30b572ef | 9 | __copyright__ = "Copyright 2012-2014, Lluís Vilanova <vilanova@ac.upc.edu>" |
5de7f9c8 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 | ||
80dd5c49 | 19 | def generate(events, backend, group): |
34770187 DB |
20 | active_events = [e for e in events |
21 | if "disable" not in e.properties] | |
1dad2ce9 | 22 | |
0ab8ed18 DB |
23 | if group == "root": |
24 | header = "trace-root.h" | |
25 | else: | |
26 | header = "trace.h" | |
27 | ||
1dad2ce9 | 28 | out('/* This file is autogenerated by tracetool, do not edit. */', |
34770187 DB |
29 | '', |
30 | '#include "qemu/osdep.h"', | |
0ab8ed18 | 31 | '#include "%s"' % header, |
1dad2ce9 | 32 | '') |
34770187 DB |
33 | |
34 | for e in events: | |
35 | out('uint16_t %s;' % e.api(e.QEMU_DSTATE)) | |
36 | ||
37 | for e in events: | |
38 | if "vcpu" in e.properties: | |
39 | vcpu_id = 0 | |
40 | else: | |
41 | vcpu_id = "TRACE_VCPU_EVENT_NONE" | |
42 | out('TraceEvent %(event)s = {', | |
43 | ' .id = 0,', | |
44 | ' .vcpu_id = %(vcpu_id)s,', | |
45 | ' .name = \"%(name)s\",', | |
46 | ' .sstate = %(sstate)s,', | |
47 | ' .dstate = &%(dstate)s ', | |
48 | '};', | |
49 | event = e.api(e.QEMU_EVENT), | |
50 | vcpu_id = vcpu_id, | |
51 | name = e.name, | |
52 | sstate = "TRACE_%s_ENABLED" % e.name.upper(), | |
53 | dstate = e.api(e.QEMU_DSTATE)) | |
54 | ||
80dd5c49 DB |
55 | out('TraceEvent *%(group)s_trace_events[] = {', |
56 | group = group.lower()) | |
34770187 DB |
57 | |
58 | for e in events: | |
59 | out(' &%(event)s,', event = e.api(e.QEMU_EVENT)) | |
60 | ||
61 | out(' NULL,', | |
62 | '};', | |
63 | '') | |
64 | ||
80dd5c49 | 65 | out('static void trace_%(group)s_register_events(void)', |
34770187 | 66 | '{', |
80dd5c49 | 67 | ' trace_event_register_group(%(group)s_trace_events);', |
34770187 | 68 | '}', |
80dd5c49 DB |
69 | 'trace_init(trace_%(group)s_register_events)', |
70 | group = group.lower()) | |
34770187 | 71 | |
80dd5c49 | 72 | backend.generate_begin(active_events, group) |
34770187 | 73 | for event in active_events: |
80dd5c49 DB |
74 | backend.generate(event, group) |
75 | backend.generate_end(active_events, group) |