mirror of
https://gitlab.com/qemu-project/qemu
synced 2024-09-06 18:05:37 +00:00
![Alex Bennée](/assets/img/avatar_default.png)
Now we have no TCG trace events and no longer handle them in the code we can remove the handling from the tracetool to generate them. vcpu tracing is still available although the existing syscall event is an exercise in redundancy (plugins and -strace can also get the information). Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Cc: Luis Vilanova <vilanova@imperial.ac.uk> Cc: Stefan Hajnoczi <stefanha@redhat.com> Message-Id: <20220204204335.1689602-21-alex.bennee@linaro.org>
60 lines
1.6 KiB
Python
60 lines
1.6 KiB
Python
# -*- coding: utf-8 -*-
|
|
|
|
"""
|
|
Generic management for the 'vcpu' property.
|
|
|
|
"""
|
|
|
|
__author__ = "Lluís Vilanova <vilanova@ac.upc.edu>"
|
|
__copyright__ = "Copyright 2016, Lluís Vilanova <vilanova@ac.upc.edu>"
|
|
__license__ = "GPL version 2 or (at your option) any later version"
|
|
|
|
__maintainer__ = "Stefan Hajnoczi"
|
|
__email__ = "stefanha@redhat.com"
|
|
|
|
|
|
from tracetool import Arguments, try_import
|
|
|
|
|
|
def transform_event(event):
|
|
"""Transform event to comply with the 'vcpu' property (if present)."""
|
|
if "vcpu" in event.properties:
|
|
event.args = Arguments([("void *", "__cpu"), event.args])
|
|
fmt = "\"cpu=%p \""
|
|
event.fmt = fmt + event.fmt
|
|
return event
|
|
|
|
|
|
def transform_args(format, event, *args, **kwargs):
|
|
"""Transforms the arguments to suit the specified format.
|
|
|
|
The format module must implement function 'vcpu_args', which receives the
|
|
implicit arguments added by the 'vcpu' property, and must return suitable
|
|
arguments for the given format.
|
|
|
|
The function is only called for events with the 'vcpu' property.
|
|
|
|
Parameters
|
|
==========
|
|
format : str
|
|
Format module name.
|
|
event : Event
|
|
args, kwargs
|
|
Passed to 'vcpu_transform_args'.
|
|
|
|
Returns
|
|
=======
|
|
Arguments
|
|
The transformed arguments, including the non-implicit ones.
|
|
|
|
"""
|
|
if "vcpu" in event.properties:
|
|
ok, func = try_import("tracetool.format." + format,
|
|
"vcpu_transform_args")
|
|
assert ok
|
|
assert func
|
|
return Arguments([func(event.args[:1], *args, **kwargs),
|
|
event.args[1:]])
|
|
else:
|
|
return event.args
|