xref: /openbmc/qemu/scripts/tracetool/format/ust_events_h.py (revision bc6ec396d471d9e4aae7e2ff8b72e11da9a97665)
19530570fSMohamad Gebai# -*- coding: utf-8 -*-
29530570fSMohamad Gebai
39530570fSMohamad Gebai"""
430b572efSLluís Vilanovatrace/generated-ust-provider.h
59530570fSMohamad Gebai"""
69530570fSMohamad Gebai
79530570fSMohamad Gebai__author__     = "Mohamad Gebai <mohamad.gebai@polymtl.ca>"
89530570fSMohamad Gebai__copyright__  = "Copyright 2012, Mohamad Gebai <mohamad.gebai@polymtl.ca>"
99530570fSMohamad Gebai__license__    = "GPL version 2 or (at your option) any later version"
109530570fSMohamad Gebai
119530570fSMohamad Gebai__maintainer__ = "Stefan Hajnoczi"
129530570fSMohamad Gebai__email__      = "stefanha@redhat.com"
139530570fSMohamad Gebai
149530570fSMohamad Gebai
159530570fSMohamad Gebaifrom tracetool import out
169530570fSMohamad Gebai
179530570fSMohamad Gebai
1880dd5c49SDaniel P. Berrangedef generate(events, backend, group):
191dad2ce9SLluís Vilanova    events = [e for e in events
201dad2ce9SLluís Vilanova              if "disabled" not in e.properties]
211dad2ce9SLluís Vilanova
220ab8ed18SDaniel P. Berrange    if group == "all":
230ab8ed18SDaniel P. Berrange        include = "trace-ust-all.h"
240ab8ed18SDaniel P. Berrange    else:
250ab8ed18SDaniel P. Berrange        include = "trace-ust.h"
260ab8ed18SDaniel P. Berrange
279530570fSMohamad Gebai    out('/* This file is autogenerated by tracetool, do not edit. */',
289530570fSMohamad Gebai        '',
299530570fSMohamad Gebai        '#undef TRACEPOINT_PROVIDER',
309530570fSMohamad Gebai        '#define TRACEPOINT_PROVIDER qemu',
319530570fSMohamad Gebai        '',
32*e32aaa5aSMarc-André Lureau        '#undef TRACEPOINT_INCLUDE',
33*e32aaa5aSMarc-André Lureau        '#define TRACEPOINT_INCLUDE "./%s"' % include,
349530570fSMohamad Gebai        '',
3580dd5c49SDaniel P. Berrange        '#if !defined (TRACE_%s_GENERATED_UST_H) || \\'  % group.upper(),
3680dd5c49SDaniel P. Berrange        '     defined(TRACEPOINT_HEADER_MULTI_READ)',
3780dd5c49SDaniel P. Berrange        '#define TRACE_%s_GENERATED_UST_H' % group.upper(),
389530570fSMohamad Gebai        '',
399530570fSMohamad Gebai        '#include <lttng/tracepoint.h>',
409530570fSMohamad Gebai        '',
419530570fSMohamad Gebai        '/*',
429530570fSMohamad Gebai        ' * LTTng ust 2.0 does not allow you to use TP_ARGS(void) for tracepoints',
439530570fSMohamad Gebai        ' * requiring no arguments. We define these macros introduced in more recent'
449530570fSMohamad Gebai        ' * versions of LTTng ust as a workaround',
459530570fSMohamad Gebai        ' */',
469530570fSMohamad Gebai        '#ifndef _TP_EXPROTO1',
479530570fSMohamad Gebai        '#define _TP_EXPROTO1(a)               void',
489530570fSMohamad Gebai        '#endif',
499530570fSMohamad Gebai        '#ifndef _TP_EXDATA_PROTO1',
509530570fSMohamad Gebai        '#define _TP_EXDATA_PROTO1(a)          void *__tp_data',
519530570fSMohamad Gebai        '#endif',
529530570fSMohamad Gebai        '#ifndef _TP_EXDATA_VAR1',
539530570fSMohamad Gebai        '#define _TP_EXDATA_VAR1(a)            __tp_data',
549530570fSMohamad Gebai        '#endif',
559530570fSMohamad Gebai        '#ifndef _TP_EXVAR1',
569530570fSMohamad Gebai        '#define _TP_EXVAR1(a)',
579530570fSMohamad Gebai        '#endif',
589530570fSMohamad Gebai        '')
599530570fSMohamad Gebai
601dad2ce9SLluís Vilanova    for e in events:
611dad2ce9SLluís Vilanova        if len(e.args) > 0:
621dad2ce9SLluís Vilanova            out('TRACEPOINT_EVENT(',
631dad2ce9SLluís Vilanova                '   qemu,',
641dad2ce9SLluís Vilanova                '   %(name)s,',
651dad2ce9SLluís Vilanova                '   TP_ARGS(%(args)s),',
661dad2ce9SLluís Vilanova                '   TP_FIELDS(',
671dad2ce9SLluís Vilanova                name=e.name,
681dad2ce9SLluís Vilanova                args=", ".join(", ".join(i) for i in e.args))
691dad2ce9SLluís Vilanova
7041ef7b00SAlex Bennée            types = e.args.types()
7141ef7b00SAlex Bennée            names = e.args.names()
7223214429SLluís Vilanova            fmts = e.formats()
7341ef7b00SAlex Bennée            for t,n,f in zip(types, names, fmts):
7441ef7b00SAlex Bennée                if ('char *' in t) or ('char*' in t):
7541ef7b00SAlex Bennée                    out('       ctf_string(' + n + ', ' + n + ')')
7641ef7b00SAlex Bennée                elif ("%p" in f) or ("x" in f) or ("PRIx" in f):
7741ef7b00SAlex Bennée                    out('       ctf_integer_hex('+ t + ', ' + n + ', ' + n + ')')
7841ef7b00SAlex Bennée                elif ("ptr" in t) or ("*" in t):
7941ef7b00SAlex Bennée                    out('       ctf_integer_hex('+ t + ', ' + n + ', ' + n + ')')
8061b01bbcSJon Emil Jahren                elif ('int' in t) or ('long' in t) or ('unsigned' in t) \
8161b01bbcSJon Emil Jahren                        or ('size_t' in t) or ('bool' in t):
821dad2ce9SLluís Vilanova                    out('       ctf_integer(' + t + ', ' + n + ', ' + n + ')')
831dad2ce9SLluís Vilanova                elif ('double' in t) or ('float' in t):
841dad2ce9SLluís Vilanova                    out('       ctf_float(' + t + ', ' + n + ', ' + n + ')')
851dad2ce9SLluís Vilanova                elif ('void *' in t) or ('void*' in t):
861dad2ce9SLluís Vilanova                    out('       ctf_integer_hex(unsigned long, ' + n + ', ' + n + ')')
871dad2ce9SLluís Vilanova
881dad2ce9SLluís Vilanova            out('   )',
891dad2ce9SLluís Vilanova                ')',
901dad2ce9SLluís Vilanova                '')
911dad2ce9SLluís Vilanova
921dad2ce9SLluís Vilanova        else:
931dad2ce9SLluís Vilanova            out('TRACEPOINT_EVENT(',
941dad2ce9SLluís Vilanova                '   qemu,',
951dad2ce9SLluís Vilanova                '   %(name)s,',
961dad2ce9SLluís Vilanova                '   TP_ARGS(void),',
971dad2ce9SLluís Vilanova                '   TP_FIELDS()',
981dad2ce9SLluís Vilanova                ')',
991dad2ce9SLluís Vilanova                '',
1001dad2ce9SLluís Vilanova                name=e.name)
1011dad2ce9SLluís Vilanova
10280dd5c49SDaniel P. Berrange    out('#endif /* TRACE_%s_GENERATED_UST_H */' % group.upper(),
1039530570fSMohamad Gebai        '',
1049530570fSMohamad Gebai        '/* This part must be outside ifdef protection */',
1059530570fSMohamad Gebai        '#include <lttng/tracepoint-event.h>')
106