xref: /openbmc/qemu/scripts/tracetool/backend/ust.py (revision 9530570f)
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
1993fba161SLluís VilanovaPUBLIC = True
2093fba161SLluís Vilanova
21fbc54b94SLluís Vilanovadef c(events):
22*9530570fSMohamad Gebai    pass
23fbc54b94SLluís Vilanova
24fbc54b94SLluís Vilanova
25fbc54b94SLluís Vilanovadef h(events):
26*9530570fSMohamad Gebai    out('#include <lttng/tracepoint.h>',
27*9530570fSMohamad Gebai        '#include "trace/generated-ust-provider.h"',
28*9530570fSMohamad Gebai        '')
29fbc54b94SLluís Vilanova    for e in events:
30*9530570fSMohamad Gebai        argnames = ", ".join(e.args.names())
31fbc54b94SLluís Vilanova        if len(e.args) > 0:
32*9530570fSMohamad Gebai            argnames = ", " + argnames
33*9530570fSMohamad Gebai
34*9530570fSMohamad Gebai        out('static inline void trace_%(name)s(%(args)s)',
35*9530570fSMohamad Gebai            '{',
36*9530570fSMohamad Gebai            '    tracepoint(qemu, %(name)s%(tp_args)s);',
37*9530570fSMohamad Gebai            '}',
38*9530570fSMohamad Gebai            '',
39fbc54b94SLluís Vilanova            name = e.name,
40fbc54b94SLluís Vilanova            args = e.args,
41*9530570fSMohamad Gebai            tp_args = argnames,
42fbc54b94SLluís Vilanova            )
43fbc54b94SLluís Vilanova
44*9530570fSMohamad Gebaidef ust_events_c(events):
45*9530570fSMohamad Gebai    pass
46*9530570fSMohamad Gebai
47*9530570fSMohamad Gebaidef ust_events_h(events):
48*9530570fSMohamad Gebai    for e in events:
49*9530570fSMohamad Gebai        if len(e.args) > 0:
50*9530570fSMohamad Gebai            out('TRACEPOINT_EVENT(',
51*9530570fSMohamad Gebai                '   qemu,',
52*9530570fSMohamad Gebai                '   %(name)s,',
53*9530570fSMohamad Gebai                '   TP_ARGS(%(args)s),',
54*9530570fSMohamad Gebai                '   TP_FIELDS(',
55*9530570fSMohamad Gebai                name = e.name,
56*9530570fSMohamad Gebai                args = ", ".join(", ".join(i) for i in e.args),
57*9530570fSMohamad Gebai                )
58*9530570fSMohamad Gebai
59*9530570fSMohamad Gebai            for t,n in e.args:
60*9530570fSMohamad Gebai                if ('int' in t) or ('long' in t) or ('unsigned' in t) or ('size_t' in t):
61*9530570fSMohamad Gebai                    out('       ctf_integer(' + t + ', ' + n + ', ' + n + ')')
62*9530570fSMohamad Gebai                elif ('double' in t) or ('float' in t):
63*9530570fSMohamad Gebai                    out('       ctf_float(' + t + ', ' + n + ', ' + n + ')')
64*9530570fSMohamad Gebai                elif ('char *' in t) or ('char*' in t):
65*9530570fSMohamad Gebai                    out('       ctf_string(' + n + ', ' + n + ')')
66*9530570fSMohamad Gebai                elif ('void *' in t) or ('void*' in t):
67*9530570fSMohamad Gebai                    out('       ctf_integer_hex(unsigned long, ' + n + ', ' + n + ')')
68*9530570fSMohamad Gebai
69*9530570fSMohamad Gebai            out('   )',
70*9530570fSMohamad Gebai                ')',
71*9530570fSMohamad Gebai                '')
72*9530570fSMohamad Gebai
73fbc54b94SLluís Vilanova        else:
74*9530570fSMohamad Gebai            out('TRACEPOINT_EVENT(',
75*9530570fSMohamad Gebai                '   qemu,',
76*9530570fSMohamad Gebai                '   %(name)s,',
77*9530570fSMohamad Gebai                '   TP_ARGS(void),',
78*9530570fSMohamad Gebai                '   TP_FIELDS()',
79*9530570fSMohamad Gebai                ')',
80*9530570fSMohamad Gebai                '',
81fbc54b94SLluís Vilanova                name = e.name,
82fbc54b94SLluís Vilanova                )