1 # -*- coding: utf-8 -*-
4 Generate .stp file (DTrace with SystemTAP only).
7 __author__
= "Lluís Vilanova <vilanova@ac.upc.edu>"
8 __copyright__
= "Copyright 2012-2014, Lluís Vilanova <vilanova@ac.upc.edu>"
9 __license__
= "GPL version 2 or (at your option) any later version"
11 __maintainer__
= "Stefan Hajnoczi"
12 __email__
= "stefanha@redhat.com"
15 from tracetool
import out
16 from tracetool
.backend
.dtrace
import binary
, probeprefix
19 # Technically 'self' is not used by systemtap yet, but
20 # they recommended we keep it in the reserved list anyway
22 'break', 'catch', 'continue', 'delete', 'else', 'for',
23 'foreach', 'function', 'global', 'if', 'in', 'limit',
24 'long', 'next', 'probe', 'return', 'self', 'string',
29 def stap_escape(identifier
):
30 # Append underscore to reserved keywords
31 if identifier
in RESERVED_WORDS
:
32 return identifier
+ '_'
36 def generate(events
, backend
, group
):
37 events
= [e
for e
in events
38 if "disable" not in e
.properties
]
40 out('/* This file is autogenerated by tracetool, do not edit. */',
44 # Define prototype for probe arguments
45 out('probe %(probeprefix)s.%(name)s = process("%(binary)s").mark("%(name)s")',
47 probeprefix
=probeprefix(),
53 for name
in e
.args
.names():
54 name
= stap_escape(name
)
55 out(' %s = $arg%d;' % (name
, i
))