]> git.proxmox.com Git - mirror_qemu.git/blame - scripts/tracetool/vcpu.py
Merge tag 'pull-qapi-2022-05-16' of git://repo.or.cz/qemu/armbru into staging
[mirror_qemu.git] / scripts / tracetool / vcpu.py
CommitLineData
3d211d9f
LV
1# -*- coding: utf-8 -*-
2
3"""
4Generic management for the 'vcpu' property.
5
6"""
7
8__author__ = "Lluís Vilanova <vilanova@ac.upc.edu>"
9__copyright__ = "Copyright 2016, Lluís Vilanova <vilanova@ac.upc.edu>"
10__license__ = "GPL version 2 or (at your option) any later version"
11
12__maintainer__ = "Stefan Hajnoczi"
f892b494 13__email__ = "stefanha@redhat.com"
3d211d9f
LV
14
15
16from tracetool import Arguments, try_import
17
18
19def transform_event(event):
20 """Transform event to comply with the 'vcpu' property (if present)."""
21 if "vcpu" in event.properties:
5e7477bc 22 event.args = Arguments([("void *", "__cpu"), event.args])
126d4123
AB
23 fmt = "\"cpu=%p \""
24 event.fmt = fmt + event.fmt
3d211d9f
LV
25 return event
26
27
28def transform_args(format, event, *args, **kwargs):
29 """Transforms the arguments to suit the specified format.
30
31 The format module must implement function 'vcpu_args', which receives the
32 implicit arguments added by the 'vcpu' property, and must return suitable
33 arguments for the given format.
34
35 The function is only called for events with the 'vcpu' property.
36
37 Parameters
38 ==========
39 format : str
40 Format module name.
41 event : Event
42 args, kwargs
43 Passed to 'vcpu_transform_args'.
44
45 Returns
46 =======
47 Arguments
48 The transformed arguments, including the non-implicit ones.
49
50 """
51 if "vcpu" in event.properties:
52 ok, func = try_import("tracetool.format." + format,
53 "vcpu_transform_args")
54 assert ok
55 assert func
56 return Arguments([func(event.args[:1], *args, **kwargs),
57 event.args[1:]])
58 else:
59 return event.args