Browse Source
Generate header "trace/generated-tcg-tracers.h" with the necessary routines for
tracing events in guest code:
* trace_${event}_tcg
Convenience wrapper that calls the translation-time tracer
'trace_${event}_trans', and calls 'gen_helper_trace_${event}_exec to
generate the TCG code to later trace the event at execution time.
Signed-off-by: Lluís Vilanova <vilanova@ac.upc.edu>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
pull/14/head
committed by
Stefan Hajnoczi
5 changed files with 76 additions and 0 deletions
@ -0,0 +1,7 @@ |
|||
#ifndef TRACE_TCG_H |
|||
#define TRACE_TCG_H |
|||
|
|||
#include "trace/generated-tcg-tracers.h" |
|||
#include "trace/generated-events.h" |
|||
|
|||
#endif /* TRACE_TCG_H */ |
|||
@ -0,0 +1,57 @@ |
|||
#!/usr/bin/env python |
|||
# -*- coding: utf-8 -*- |
|||
|
|||
""" |
|||
Generate .h file for TCG code generation. |
|||
""" |
|||
|
|||
__author__ = "Lluís Vilanova <vilanova@ac.upc.edu>" |
|||
__copyright__ = "Copyright 2012-2014, Lluís Vilanova <vilanova@ac.upc.edu>" |
|||
__license__ = "GPL version 2 or (at your option) any later version" |
|||
|
|||
__maintainer__ = "Stefan Hajnoczi" |
|||
__email__ = "stefanha@linux.vnet.ibm.com" |
|||
|
|||
|
|||
from tracetool import out |
|||
|
|||
|
|||
def generate(events, backend): |
|||
out('/* This file is autogenerated by tracetool, do not edit. */', |
|||
'/* You must include this file after the inclusion of helper.h */', |
|||
'', |
|||
'#ifndef TRACE__GENERATED_TCG_TRACERS_H', |
|||
'#define TRACE__GENERATED_TCG_TRACERS_H', |
|||
'', |
|||
'#include <stdint.h>', |
|||
'', |
|||
'#include "trace.h"', |
|||
'#include "exec/helper-proto.h"', |
|||
'', |
|||
) |
|||
|
|||
for e in events: |
|||
# just keep one of them |
|||
if "tcg-trans" not in e.properties: |
|||
continue |
|||
|
|||
# get the original event definition |
|||
e = e.original.original |
|||
|
|||
out('static inline void %(name_tcg)s(%(args)s)', |
|||
'{', |
|||
name_tcg=e.api(e.QEMU_TRACE_TCG), |
|||
args=e.args) |
|||
|
|||
if "disable" not in e.properties: |
|||
out(' %(name_trans)s(%(argnames_trans)s);', |
|||
' gen_helper_%(name_exec)s(%(argnames_exec)s);', |
|||
name_trans=e.event_trans.api(e.QEMU_TRACE), |
|||
name_exec=e.event_exec.api(e.QEMU_TRACE), |
|||
argnames_trans=", ".join(e.event_trans.args.names()), |
|||
argnames_exec=", ".join(e.event_exec.args.names())) |
|||
|
|||
out('}') |
|||
|
|||
out('', |
|||
'#endif /* TRACE__GENERATED_TCG_TRACERS_H */') |
|||
Loading…
Reference in new issue