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 19*93fba161SLluís VilanovaPUBLIC = True 20*93fba161SLluís Vilanova 21*93fba161SLluís Vilanova 22fbc54b94SLluís Vilanovadef c(events): 23fbc54b94SLluís Vilanova out('#include <ust/marker.h>', 24fbc54b94SLluís Vilanova '#undef mutex_lock', 25fbc54b94SLluís Vilanova '#undef mutex_unlock', 26fbc54b94SLluís Vilanova '#undef inline', 27fbc54b94SLluís Vilanova '#undef wmb', 28fbc54b94SLluís Vilanova '#include "trace.h"') 29fbc54b94SLluís Vilanova 30fbc54b94SLluís Vilanova for e in events: 31fbc54b94SLluís Vilanova argnames = ", ".join(e.args.names()) 32fbc54b94SLluís Vilanova if len(e.args) > 0: 33fbc54b94SLluís Vilanova argnames = ', ' + argnames 34fbc54b94SLluís Vilanova 35fbc54b94SLluís Vilanova out('DEFINE_TRACE(ust_%(name)s);', 36fbc54b94SLluís Vilanova '', 37fbc54b94SLluís Vilanova 'static void ust_%(name)s_probe(%(args)s)', 38fbc54b94SLluís Vilanova '{', 39fbc54b94SLluís Vilanova ' trace_mark(ust, %(name)s, %(fmt)s%(argnames)s);', 40fbc54b94SLluís Vilanova '}', 41fbc54b94SLluís Vilanova name = e.name, 42fbc54b94SLluís Vilanova args = e.args, 43fbc54b94SLluís Vilanova fmt = e.fmt, 44fbc54b94SLluís Vilanova argnames = argnames, 45fbc54b94SLluís Vilanova ) 46fbc54b94SLluís Vilanova 47fbc54b94SLluís Vilanova else: 48fbc54b94SLluís Vilanova out('DEFINE_TRACE(ust_%(name)s);', 49fbc54b94SLluís Vilanova '', 50fbc54b94SLluís Vilanova 'static void ust_%(name)s_probe(%(args)s)', 51fbc54b94SLluís Vilanova '{', 52fbc54b94SLluís Vilanova ' trace_mark(ust, %(name)s, UST_MARKER_NOARGS);', 53fbc54b94SLluís Vilanova '}', 54fbc54b94SLluís Vilanova name = e.name, 55fbc54b94SLluís Vilanova args = e.args, 56fbc54b94SLluís Vilanova ) 57fbc54b94SLluís Vilanova 58fbc54b94SLluís Vilanova # register probes 59fbc54b94SLluís Vilanova out('', 60fbc54b94SLluís Vilanova 'static void __attribute__((constructor)) trace_init(void)', 61fbc54b94SLluís Vilanova '{') 62fbc54b94SLluís Vilanova 63fbc54b94SLluís Vilanova for e in events: 64fbc54b94SLluís Vilanova out(' register_trace_ust_%(name)s(ust_%(name)s_probe);', 65fbc54b94SLluís Vilanova name = e.name, 66fbc54b94SLluís Vilanova ) 67fbc54b94SLluís Vilanova 68fbc54b94SLluís Vilanova out('}') 69fbc54b94SLluís Vilanova 70fbc54b94SLluís Vilanova 71fbc54b94SLluís Vilanovadef h(events): 72fbc54b94SLluís Vilanova out('#include <ust/tracepoint.h>', 73fbc54b94SLluís Vilanova '#undef mutex_lock', 74fbc54b94SLluís Vilanova '#undef mutex_unlock', 75fbc54b94SLluís Vilanova '#undef inline', 76fbc54b94SLluís Vilanova '#undef wmb') 77fbc54b94SLluís Vilanova 78fbc54b94SLluís Vilanova for e in events: 79fbc54b94SLluís Vilanova if len(e.args) > 0: 80fbc54b94SLluís Vilanova out('DECLARE_TRACE(ust_%(name)s, TP_PROTO(%(args)s), TP_ARGS(%(argnames)s));', 81fbc54b94SLluís Vilanova '#define trace_%(name)s trace_ust_%(name)s', 82fbc54b94SLluís Vilanova name = e.name, 83fbc54b94SLluís Vilanova args = e.args, 84fbc54b94SLluís Vilanova argnames = ", ".join(e.args.names()), 85fbc54b94SLluís Vilanova ) 86fbc54b94SLluís Vilanova 87fbc54b94SLluís Vilanova else: 88fbc54b94SLluís Vilanova out('_DECLARE_TRACEPOINT_NOARGS(ust_%(name)s);', 89fbc54b94SLluís Vilanova '#define trace_%(name)s trace_ust_%(name)s', 90fbc54b94SLluís Vilanova name = e.name, 91fbc54b94SLluís Vilanova ) 92fbc54b94SLluís Vilanova 93fbc54b94SLluís Vilanova out() 94