xref: /openbmc/qemu/scripts/tracetool/backend/ust.py (revision 93fba161)
1fbc54b94SLluís Vilanova#!/usr/bin/env python
2fbc54b94SLluís Vilanova# -*- coding: utf-8 -*-
3fbc54b94SLluís Vilanova
4fbc54b94SLluís Vilanova"""
5fbc54b94SLluís VilanovaLTTng User Space Tracing backend.
6fbc54b94SLluís Vilanova"""
7fbc54b94SLluís Vilanova
8fbc54b94SLluís Vilanova__author__     = "Lluís Vilanova <vilanova@ac.upc.edu>"
9fbc54b94SLluís Vilanova__copyright__  = "Copyright 2012, Lluís Vilanova <vilanova@ac.upc.edu>"
10fbc54b94SLluís Vilanova__license__    = "GPL version 2 or (at your option) any later version"
11fbc54b94SLluís Vilanova
12fbc54b94SLluís Vilanova__maintainer__ = "Stefan Hajnoczi"
13fbc54b94SLluís Vilanova__email__      = "stefanha@linux.vnet.ibm.com"
14fbc54b94SLluís Vilanova
15fbc54b94SLluís Vilanova
16fbc54b94SLluís Vilanovafrom tracetool import out
17fbc54b94SLluís Vilanova
18fbc54b94SLluís Vilanova
19*93fba161SLluís VilanovaPUBLIC = True
20*93fba161SLluís Vilanova
21*93fba161SLluís Vilanova
22fbc54b94SLluís Vilanovadef c(events):
23fbc54b94SLluís Vilanova    out('#include <ust/marker.h>',
24fbc54b94SLluís Vilanova        '#undef mutex_lock',
25fbc54b94SLluís Vilanova        '#undef mutex_unlock',
26fbc54b94SLluís Vilanova        '#undef inline',
27fbc54b94SLluís Vilanova        '#undef wmb',
28fbc54b94SLluís Vilanova        '#include "trace.h"')
29fbc54b94SLluís Vilanova
30fbc54b94SLluís Vilanova    for e in events:
31fbc54b94SLluís Vilanova        argnames = ", ".join(e.args.names())
32fbc54b94SLluís Vilanova        if len(e.args) > 0:
33fbc54b94SLluís Vilanova            argnames = ', ' + argnames
34fbc54b94SLluís Vilanova
35fbc54b94SLluís Vilanova            out('DEFINE_TRACE(ust_%(name)s);',
36fbc54b94SLluís Vilanova                '',
37fbc54b94SLluís Vilanova                'static void ust_%(name)s_probe(%(args)s)',
38fbc54b94SLluís Vilanova                '{',
39fbc54b94SLluís Vilanova                '    trace_mark(ust, %(name)s, %(fmt)s%(argnames)s);',
40fbc54b94SLluís Vilanova                '}',
41fbc54b94SLluís Vilanova                name = e.name,
42fbc54b94SLluís Vilanova                args = e.args,
43fbc54b94SLluís Vilanova                fmt = e.fmt,
44fbc54b94SLluís Vilanova                argnames = argnames,
45fbc54b94SLluís Vilanova                )
46fbc54b94SLluís Vilanova
47fbc54b94SLluís Vilanova        else:
48fbc54b94SLluís Vilanova            out('DEFINE_TRACE(ust_%(name)s);',
49fbc54b94SLluís Vilanova                '',
50fbc54b94SLluís Vilanova                'static void ust_%(name)s_probe(%(args)s)',
51fbc54b94SLluís Vilanova                '{',
52fbc54b94SLluís Vilanova                '    trace_mark(ust, %(name)s, UST_MARKER_NOARGS);',
53fbc54b94SLluís Vilanova                '}',
54fbc54b94SLluís Vilanova                name = e.name,
55fbc54b94SLluís Vilanova                args = e.args,
56fbc54b94SLluís Vilanova                )
57fbc54b94SLluís Vilanova
58fbc54b94SLluís Vilanova    # register probes
59fbc54b94SLluís Vilanova    out('',
60fbc54b94SLluís Vilanova        'static void __attribute__((constructor)) trace_init(void)',
61fbc54b94SLluís Vilanova        '{')
62fbc54b94SLluís Vilanova
63fbc54b94SLluís Vilanova    for e in events:
64fbc54b94SLluís Vilanova        out('    register_trace_ust_%(name)s(ust_%(name)s_probe);',
65fbc54b94SLluís Vilanova            name = e.name,
66fbc54b94SLluís Vilanova            )
67fbc54b94SLluís Vilanova
68fbc54b94SLluís Vilanova    out('}')
69fbc54b94SLluís Vilanova
70fbc54b94SLluís Vilanova
71fbc54b94SLluís Vilanovadef h(events):
72fbc54b94SLluís Vilanova    out('#include <ust/tracepoint.h>',
73fbc54b94SLluís Vilanova        '#undef mutex_lock',
74fbc54b94SLluís Vilanova        '#undef mutex_unlock',
75fbc54b94SLluís Vilanova        '#undef inline',
76fbc54b94SLluís Vilanova        '#undef wmb')
77fbc54b94SLluís Vilanova
78fbc54b94SLluís Vilanova    for e in events:
79fbc54b94SLluís Vilanova        if len(e.args) > 0:
80fbc54b94SLluís Vilanova            out('DECLARE_TRACE(ust_%(name)s, TP_PROTO(%(args)s), TP_ARGS(%(argnames)s));',
81fbc54b94SLluís Vilanova                '#define trace_%(name)s trace_ust_%(name)s',
82fbc54b94SLluís Vilanova                name = e.name,
83fbc54b94SLluís Vilanova                args = e.args,
84fbc54b94SLluís Vilanova                argnames = ", ".join(e.args.names()),
85fbc54b94SLluís Vilanova                )
86fbc54b94SLluís Vilanova
87fbc54b94SLluís Vilanova        else:
88fbc54b94SLluís Vilanova            out('_DECLARE_TRACEPOINT_NOARGS(ust_%(name)s);',
89fbc54b94SLluís Vilanova                '#define trace_%(name)s trace_ust_%(name)s',
90fbc54b94SLluís Vilanova                name = e.name,
91fbc54b94SLluís Vilanova                )
92fbc54b94SLluís Vilanova
93fbc54b94SLluís Vilanova    out()
94