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