-----BEGIN PGP SIGNATURE-----

Version: GnuPG v1
 
 iQEcBAABAgAGBQJU9NnuAAoJEJykq7OBq3PIBPoH/3N7yHa8IC2TYJ3hR5QZpNQ/
 FWzT+eO6htGFUwyz1rHNTuIBuDxueGmMGesIBJpAiahx1xQVz+qtfgcTyVoaaXCL
 ETXePFeDpUBl8BihYm9cVCt98pMulVP+EMNwR8TX5YeGuq6IdPYsV8oPwIdpFkkk
 eQqdo11fzPZaDST6ZaFn0WfnElQKHiHvzp8HqZpieMcrZ2wgOWs76pEVSph49bBA
 /KFxKT06Bz9yKKUHa13WeEbMFCCVfjOAJwnGYXjuX87ynXDYkT1tHdl3CuiuPPcZ
 csjI1bdofrr1irxvlaN4SvZcgcIWT9D1RzhDO8ZZTXDJHVGamEiqzZ+iiWI4wME=
 =Kw5L
 -----END PGP SIGNATURE-----

Merge remote-tracking branch 'remotes/stefanha/tags/tracing-pull-request' into staging

# gpg: Signature made Mon Mar  2 21:45:18 2015 GMT using RSA key ID 81AB73C8
# gpg: Good signature from "Stefan Hajnoczi <stefanha@redhat.com>"
# gpg:                 aka "Stefan Hajnoczi <stefanha@gmail.com>"

* remotes/stefanha/tags/tracing-pull-request:
  trace: add DTrace reserved words for .d files
  unbreak dtrace tracing due to double _ in rdma names

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
Peter Maydell 2015-03-04 15:33:05 +00:00
commit c10b02836f
3 changed files with 32 additions and 22 deletions

View file

@ -16,6 +16,19 @@ __email__ = "stefanha@linux.vnet.ibm.com"
from tracetool import out
# Reserved keywords from
# https://wikis.oracle.com/display/DTrace/Types,+Operators+and+Expressions
RESERVED_WORDS = (
'auto', 'goto', 'sizeof', 'break', 'if', 'static', 'case', 'import',
'string', 'char', 'inline', 'stringof', 'const', 'int', 'struct',
'continue', 'long', 'switch', 'counter', 'offsetof', 'this',
'default', 'probe', 'translator', 'do', 'provider', 'typedef',
'double', 'register', 'union', 'else', 'restrict', 'unsigned',
'enum', 'return', 'void', 'extern', 'self', 'volatile', 'float',
'short', 'while', 'for', 'signed', 'xlate',
)
def generate(events, backend):
events = [e for e in events
if "disable" not in e.properties]
@ -25,18 +38,17 @@ def generate(events, backend):
'provider qemu {')
for e in events:
args = str(e.args)
# DTrace provider syntax expects foo() for empty
# params, not foo(void)
if args == 'void':
args = ''
args = []
for type_, name in e.args:
if name in RESERVED_WORDS:
name += '_'
args.append(type_ + ' ' + name)
# Define prototype for probe arguments
out('',
'probe %(name)s(%(args)s);',
name=e.name,
args=args)
args=','.join(args))
out('',
'};')