xref: /openbmc/qemu/scripts/tracetool/backend/ust.py (revision 7d08f0da)
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>"
9*7d08f0daSLluís Vilanova__copyright__  = "Copyright 2012-2014, 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):
229530570fSMohamad Gebai    pass
23fbc54b94SLluís Vilanova
24fbc54b94SLluís Vilanova
25fbc54b94SLluís Vilanovadef h(events):
269530570fSMohamad Gebai    out('#include <lttng/tracepoint.h>',
279530570fSMohamad Gebai        '#include "trace/generated-ust-provider.h"',
289530570fSMohamad Gebai        '')
29fbc54b94SLluís Vilanova    for e in events:
309530570fSMohamad Gebai        argnames = ", ".join(e.args.names())
31fbc54b94SLluís Vilanova        if len(e.args) > 0:
329530570fSMohamad Gebai            argnames = ", " + argnames
339530570fSMohamad Gebai
34*7d08f0daSLluís Vilanova        out('static inline void %(api)s(%(args)s)',
359530570fSMohamad Gebai            '{',
369530570fSMohamad Gebai            '    tracepoint(qemu, %(name)s%(tp_args)s);',
379530570fSMohamad Gebai            '}',
389530570fSMohamad Gebai            '',
39*7d08f0daSLluís Vilanova            api = e.api()
40fbc54b94SLluís Vilanova            name = e.name,
41fbc54b94SLluís Vilanova            args = e.args,
429530570fSMohamad Gebai            tp_args = argnames,
43fbc54b94SLluís Vilanova            )
44fbc54b94SLluís Vilanova
459530570fSMohamad Gebaidef ust_events_c(events):
469530570fSMohamad Gebai    pass
479530570fSMohamad Gebai
489530570fSMohamad Gebaidef ust_events_h(events):
499530570fSMohamad Gebai    for e in events:
509530570fSMohamad Gebai        if len(e.args) > 0:
519530570fSMohamad Gebai            out('TRACEPOINT_EVENT(',
529530570fSMohamad Gebai                '   qemu,',
539530570fSMohamad Gebai                '   %(name)s,',
549530570fSMohamad Gebai                '   TP_ARGS(%(args)s),',
559530570fSMohamad Gebai                '   TP_FIELDS(',
569530570fSMohamad Gebai                name = e.name,
579530570fSMohamad Gebai                args = ", ".join(", ".join(i) for i in e.args),
589530570fSMohamad Gebai                )
599530570fSMohamad Gebai
609530570fSMohamad Gebai            for t,n in e.args:
619530570fSMohamad Gebai                if ('int' in t) or ('long' in t) or ('unsigned' in t) or ('size_t' in t):
629530570fSMohamad Gebai                    out('       ctf_integer(' + t + ', ' + n + ', ' + n + ')')
639530570fSMohamad Gebai                elif ('double' in t) or ('float' in t):
649530570fSMohamad Gebai                    out('       ctf_float(' + t + ', ' + n + ', ' + n + ')')
659530570fSMohamad Gebai                elif ('char *' in t) or ('char*' in t):
669530570fSMohamad Gebai                    out('       ctf_string(' + n + ', ' + n + ')')
679530570fSMohamad Gebai                elif ('void *' in t) or ('void*' in t):
689530570fSMohamad Gebai                    out('       ctf_integer_hex(unsigned long, ' + n + ', ' + n + ')')
699530570fSMohamad Gebai
709530570fSMohamad Gebai            out('   )',
719530570fSMohamad Gebai                ')',
729530570fSMohamad Gebai                '')
739530570fSMohamad Gebai
74fbc54b94SLluís Vilanova        else:
759530570fSMohamad Gebai            out('TRACEPOINT_EVENT(',
769530570fSMohamad Gebai                '   qemu,',
779530570fSMohamad Gebai                '   %(name)s,',
789530570fSMohamad Gebai                '   TP_ARGS(void),',
799530570fSMohamad Gebai                '   TP_FIELDS()',
809530570fSMohamad Gebai                ')',
819530570fSMohamad Gebai                '',
82fbc54b94SLluís Vilanova                name = e.name,
83fbc54b94SLluís Vilanova                )
84