]> Git Repo - qemu.git/blob - scripts/tracetool/vcpu.py
net: Pad short frames to minimum size before sending from SLiRP/TAP
[qemu.git] / scripts / tracetool / vcpu.py
1 # -*- coding: utf-8 -*-
2
3 """
4 Generic management for the 'vcpu' property.
5
6 """
7
8 __author__     = "Lluís Vilanova <[email protected]>"
9 __copyright__  = "Copyright 2016, Lluís Vilanova <[email protected]>"
10 __license__    = "GPL version 2 or (at your option) any later version"
11
12 __maintainer__ = "Stefan Hajnoczi"
13 __email__      = "[email protected]"
14
15
16 from tracetool import Arguments, try_import
17
18
19 def transform_event(event):
20     """Transform event to comply with the 'vcpu' property (if present)."""
21     if "vcpu" in event.properties:
22         # events with 'tcg-trans' and 'tcg-exec' are auto-generated from
23         # already-patched events
24         assert "tcg-trans" not in event.properties
25         assert "tcg-exec" not in event.properties
26
27         event.args = Arguments([("void *", "__cpu"), event.args])
28         if "tcg" in event.properties:
29             fmt = "\"cpu=%p \""
30             event.fmt = [fmt + event.fmt[0],
31                          fmt + event.fmt[1]]
32         else:
33             fmt = "\"cpu=%p \""
34             event.fmt = fmt + event.fmt
35     return event
36
37
38 def transform_args(format, event, *args, **kwargs):
39     """Transforms the arguments to suit the specified format.
40
41     The format module must implement function 'vcpu_args', which receives the
42     implicit arguments added by the 'vcpu' property, and must return suitable
43     arguments for the given format.
44
45     The function is only called for events with the 'vcpu' property.
46
47     Parameters
48     ==========
49     format : str
50         Format module name.
51     event : Event
52     args, kwargs
53         Passed to 'vcpu_transform_args'.
54
55     Returns
56     =======
57     Arguments
58         The transformed arguments, including the non-implicit ones.
59
60     """
61     if "vcpu" in event.properties:
62         ok, func = try_import("tracetool.format." + format,
63                               "vcpu_transform_args")
64         assert ok
65         assert func
66         return Arguments([func(event.args[:1], *args, **kwargs),
67                           event.args[1:]])
68     else:
69         return event.args
This page took 0.029043 seconds and 4 git commands to generate.