]>
Commit | Line | Data |
---|---|---|
fbc54b94 LV |
1 | #!/usr/bin/env python |
2 | # -*- coding: utf-8 -*- | |
3 | ||
4 | """ | |
5 | LTTng User Space Tracing backend. | |
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 | ||
16 | from tracetool import out | |
17 | ||
18 | ||
19 | def c(events): | |
20 | out('#include <ust/marker.h>', | |
21 | '#undef mutex_lock', | |
22 | '#undef mutex_unlock', | |
23 | '#undef inline', | |
24 | '#undef wmb', | |
25 | '#include "trace.h"') | |
26 | ||
27 | for e in events: | |
28 | argnames = ", ".join(e.args.names()) | |
29 | if len(e.args) > 0: | |
30 | argnames = ', ' + argnames | |
31 | ||
32 | out('DEFINE_TRACE(ust_%(name)s);', | |
33 | '', | |
34 | 'static void ust_%(name)s_probe(%(args)s)', | |
35 | '{', | |
36 | ' trace_mark(ust, %(name)s, %(fmt)s%(argnames)s);', | |
37 | '}', | |
38 | name = e.name, | |
39 | args = e.args, | |
40 | fmt = e.fmt, | |
41 | argnames = argnames, | |
42 | ) | |
43 | ||
44 | else: | |
45 | out('DEFINE_TRACE(ust_%(name)s);', | |
46 | '', | |
47 | 'static void ust_%(name)s_probe(%(args)s)', | |
48 | '{', | |
49 | ' trace_mark(ust, %(name)s, UST_MARKER_NOARGS);', | |
50 | '}', | |
51 | name = e.name, | |
52 | args = e.args, | |
53 | ) | |
54 | ||
55 | # register probes | |
56 | out('', | |
57 | 'static void __attribute__((constructor)) trace_init(void)', | |
58 | '{') | |
59 | ||
60 | for e in events: | |
61 | out(' register_trace_ust_%(name)s(ust_%(name)s_probe);', | |
62 | name = e.name, | |
63 | ) | |
64 | ||
65 | out('}') | |
66 | ||
67 | ||
68 | def h(events): | |
69 | out('#include <ust/tracepoint.h>', | |
70 | '#undef mutex_lock', | |
71 | '#undef mutex_unlock', | |
72 | '#undef inline', | |
73 | '#undef wmb') | |
74 | ||
75 | for e in events: | |
76 | if len(e.args) > 0: | |
77 | out('DECLARE_TRACE(ust_%(name)s, TP_PROTO(%(args)s), TP_ARGS(%(argnames)s));', | |
78 | '#define trace_%(name)s trace_ust_%(name)s', | |
79 | name = e.name, | |
80 | args = e.args, | |
81 | argnames = ", ".join(e.args.names()), | |
82 | ) | |
83 | ||
84 | else: | |
85 | out('_DECLARE_TRACEPOINT_NOARGS(ust_%(name)s);', | |
86 | '#define trace_%(name)s trace_ust_%(name)s', | |
87 | name = e.name, | |
88 | ) | |
89 | ||
90 | out() |