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