xref: /qemu/qapi/misc.json (revision 5305a4ee)
1112ed241SMarkus Armbruster# -*- Mode: Python -*-
2f7160f32SAndrea Bolognani# vim: filetype=python
3112ed241SMarkus Armbruster#
4112ed241SMarkus Armbruster
5112ed241SMarkus Armbruster##
6112ed241SMarkus Armbruster# = Miscellanea
7112ed241SMarkus Armbruster##
8112ed241SMarkus Armbruster
9b47aa7b3SLaszlo Ersek{ 'include': 'common.json' }
10b47aa7b3SLaszlo Ersek
11112ed241SMarkus Armbruster##
12112ed241SMarkus Armbruster# @add_client:
13112ed241SMarkus Armbruster#
14a937b6aaSMarkus Armbruster# Allow client connections for VNC, Spice and socket based character
15a937b6aaSMarkus Armbruster# devices to be passed in to QEMU via SCM_RIGHTS.
16112ed241SMarkus Armbruster#
17a937b6aaSMarkus Armbruster# If the FD associated with @fdname is not a socket, the command will
18a937b6aaSMarkus Armbruster# fail and the FD will be closed.
19bf5de8c5SMarc-André Lureau#
20a937b6aaSMarkus Armbruster# @protocol: protocol name.  Valid names are "vnc", "spice",
21ff62c210SMarkus Armbruster#     "@dbus-display" or the name of a character device (e.g. from
22a937b6aaSMarkus Armbruster#     -chardev id=XXXX)
23112ed241SMarkus Armbruster#
24112ed241SMarkus Armbruster# @fdname: file descriptor name previously passed via 'getfd' command
25112ed241SMarkus Armbruster#
26a937b6aaSMarkus Armbruster# @skipauth: whether to skip authentication.  Only applies to "vnc"
27a937b6aaSMarkus Armbruster#     and "spice" protocols
28112ed241SMarkus Armbruster#
29a937b6aaSMarkus Armbruster# @tls: whether to perform TLS. Only applies to the "spice" protocol
30112ed241SMarkus Armbruster#
319bc6e893SMarkus Armbruster# Since: 0.14
32112ed241SMarkus Armbruster#
33112ed241SMarkus Armbruster# Example:
34112ed241SMarkus Armbruster#
35112ed241SMarkus Armbruster#     -> { "execute": "add_client", "arguments": { "protocol": "vnc",
36112ed241SMarkus Armbruster#                                                  "fdname": "myclient" } }
37112ed241SMarkus Armbruster#     <- { "return": {} }
38112ed241SMarkus Armbruster##
39112ed241SMarkus Armbruster{ 'command': 'add_client',
40112ed241SMarkus Armbruster  'data': { 'protocol': 'str', 'fdname': 'str', '*skipauth': 'bool',
41112ed241SMarkus Armbruster            '*tls': 'bool' } }
42112ed241SMarkus Armbruster
43112ed241SMarkus Armbruster##
44112ed241SMarkus Armbruster# @NameInfo:
45112ed241SMarkus Armbruster#
46112ed241SMarkus Armbruster# Guest name information.
47112ed241SMarkus Armbruster#
48112ed241SMarkus Armbruster# @name: The name of the guest
49112ed241SMarkus Armbruster#
509bc6e893SMarkus Armbruster# Since: 0.14
51112ed241SMarkus Armbruster##
52112ed241SMarkus Armbruster{ 'struct': 'NameInfo', 'data': {'*name': 'str'} }
53112ed241SMarkus Armbruster
54112ed241SMarkus Armbruster##
55112ed241SMarkus Armbruster# @query-name:
56112ed241SMarkus Armbruster#
57112ed241SMarkus Armbruster# Return the name information of a guest.
58112ed241SMarkus Armbruster#
59112ed241SMarkus Armbruster# Returns: @NameInfo of the guest
60112ed241SMarkus Armbruster#
619bc6e893SMarkus Armbruster# Since: 0.14
62112ed241SMarkus Armbruster#
63112ed241SMarkus Armbruster# Example:
64112ed241SMarkus Armbruster#
65112ed241SMarkus Armbruster#     -> { "execute": "query-name" }
66112ed241SMarkus Armbruster#     <- { "return": { "name": "qemu-name" } }
67112ed241SMarkus Armbruster##
68a87706c8SIgor Mammedov{ 'command': 'query-name', 'returns': 'NameInfo', 'allow-preconfig': true }
69112ed241SMarkus Armbruster
70112ed241SMarkus Armbruster##
71112ed241SMarkus Armbruster# @IOThreadInfo:
72112ed241SMarkus Armbruster#
73112ed241SMarkus Armbruster# Information about an iothread
74112ed241SMarkus Armbruster#
75112ed241SMarkus Armbruster# @id: the identifier of the iothread
76112ed241SMarkus Armbruster#
77112ed241SMarkus Armbruster# @thread-id: ID of the underlying host thread
78112ed241SMarkus Armbruster#
79a937b6aaSMarkus Armbruster# @poll-max-ns: maximum polling time in ns, 0 means polling is
80a937b6aaSMarkus Armbruster#     disabled (since 2.9)
81112ed241SMarkus Armbruster#
82a937b6aaSMarkus Armbruster# @poll-grow: how many ns will be added to polling time, 0 means that
83112ed241SMarkus Armbruster#     it's not configured (since 2.9)
84112ed241SMarkus Armbruster#
85a937b6aaSMarkus Armbruster# @poll-shrink: how many ns will be removed from polling time, 0 means
86a937b6aaSMarkus Armbruster#     that it's not configured (since 2.9)
87a937b6aaSMarkus Armbruster#
88a937b6aaSMarkus Armbruster# @aio-max-batch: maximum number of requests in a batch for the AIO
89a937b6aaSMarkus Armbruster#     engine, 0 means that the engine will use its default (since 6.1)
901793ad02SStefano Garzarella#
91112ed241SMarkus Armbruster# Since: 2.0
92112ed241SMarkus Armbruster##
93112ed241SMarkus Armbruster{ 'struct': 'IOThreadInfo',
94112ed241SMarkus Armbruster  'data': {'id': 'str',
95112ed241SMarkus Armbruster           'thread-id': 'int',
96112ed241SMarkus Armbruster           'poll-max-ns': 'int',
97112ed241SMarkus Armbruster           'poll-grow': 'int',
981793ad02SStefano Garzarella           'poll-shrink': 'int',
991793ad02SStefano Garzarella           'aio-max-batch': 'int' } }
100112ed241SMarkus Armbruster
101112ed241SMarkus Armbruster##
102112ed241SMarkus Armbruster# @query-iothreads:
103112ed241SMarkus Armbruster#
104112ed241SMarkus Armbruster# Returns a list of information about each iothread.
105112ed241SMarkus Armbruster#
106a937b6aaSMarkus Armbruster# Note: this list excludes the QEMU main loop thread, which is not
107a937b6aaSMarkus Armbruster#     declared using the -object iothread command-line option.  It is
108a937b6aaSMarkus Armbruster#     always the main thread of the process.
109112ed241SMarkus Armbruster#
110112ed241SMarkus Armbruster# Returns: a list of @IOThreadInfo for each iothread
111112ed241SMarkus Armbruster#
112112ed241SMarkus Armbruster# Since: 2.0
113112ed241SMarkus Armbruster#
114112ed241SMarkus Armbruster# Example:
115112ed241SMarkus Armbruster#
116112ed241SMarkus Armbruster#     -> { "execute": "query-iothreads" }
117112ed241SMarkus Armbruster#     <- { "return": [
118112ed241SMarkus Armbruster#              {
119112ed241SMarkus Armbruster#                 "id":"iothread0",
120112ed241SMarkus Armbruster#                 "thread-id":3134
121112ed241SMarkus Armbruster#              },
122112ed241SMarkus Armbruster#              {
123112ed241SMarkus Armbruster#                 "id":"iothread1",
124112ed241SMarkus Armbruster#                 "thread-id":3135
125112ed241SMarkus Armbruster#              }
126112ed241SMarkus Armbruster#           ]
127112ed241SMarkus Armbruster#        }
128112ed241SMarkus Armbruster##
129a87706c8SIgor Mammedov{ 'command': 'query-iothreads', 'returns': ['IOThreadInfo'],
130a87706c8SIgor Mammedov  'allow-preconfig': true }
131112ed241SMarkus Armbruster
132112ed241SMarkus Armbruster##
133112ed241SMarkus Armbruster# @stop:
134112ed241SMarkus Armbruster#
135b9ae473dSSteve Sistare# Stop guest VM execution.
136112ed241SMarkus Armbruster#
1379bc6e893SMarkus Armbruster# Since: 0.14
138112ed241SMarkus Armbruster#
139a937b6aaSMarkus Armbruster# Notes: This function will succeed even if the guest is already in
140a937b6aaSMarkus Armbruster#     the stopped state.  In "inmigrate" state, it will ensure that
141a937b6aaSMarkus Armbruster#     the guest remains paused once migration finishes, as if the -S
142a937b6aaSMarkus Armbruster#     option was passed on the command line.
143112ed241SMarkus Armbruster#
144b9ae473dSSteve Sistare#     In the "suspended" state, it will completely stop the VM and
145b9ae473dSSteve Sistare#     cause a transition to the "paused" state.  (Since 9.0)
146b9ae473dSSteve Sistare#
147112ed241SMarkus Armbruster# Example:
148112ed241SMarkus Armbruster#
149112ed241SMarkus Armbruster#     -> { "execute": "stop" }
150112ed241SMarkus Armbruster#     <- { "return": {} }
151112ed241SMarkus Armbruster##
152112ed241SMarkus Armbruster{ 'command': 'stop' }
153112ed241SMarkus Armbruster
154112ed241SMarkus Armbruster##
155112ed241SMarkus Armbruster# @cont:
156112ed241SMarkus Armbruster#
157b9ae473dSSteve Sistare# Resume guest VM execution.
158112ed241SMarkus Armbruster#
1599bc6e893SMarkus Armbruster# Since: 0.14
160112ed241SMarkus Armbruster#
161a937b6aaSMarkus Armbruster# Notes: This command will succeed if the guest is currently running.
162a937b6aaSMarkus Armbruster#     It will also succeed if the guest is in the "inmigrate" state;
163a937b6aaSMarkus Armbruster#     in this case, the effect of the command is to make sure the
164a937b6aaSMarkus Armbruster#     guest starts once migration finishes, removing the effect of the
165a937b6aaSMarkus Armbruster#     -S command line option if it was passed.
166112ed241SMarkus Armbruster#
167b9ae473dSSteve Sistare#     If the VM was previously suspended, and not been reset or woken,
168b9ae473dSSteve Sistare#     this command will transition back to the "suspended" state.
169b9ae473dSSteve Sistare#     (Since 9.0)
170b9ae473dSSteve Sistare#
171112ed241SMarkus Armbruster# Example:
172112ed241SMarkus Armbruster#
173112ed241SMarkus Armbruster#     -> { "execute": "cont" }
174112ed241SMarkus Armbruster#     <- { "return": {} }
175112ed241SMarkus Armbruster##
176112ed241SMarkus Armbruster{ 'command': 'cont' }
177112ed241SMarkus Armbruster
178112ed241SMarkus Armbruster##
179361ac948SMarkus Armbruster# @x-exit-preconfig:
180047f7038SIgor Mammedov#
181047f7038SIgor Mammedov# Exit from "preconfig" state
182047f7038SIgor Mammedov#
183a937b6aaSMarkus Armbruster# This command makes QEMU exit the preconfig state and proceed with VM
184a937b6aaSMarkus Armbruster# initialization using configuration data provided on the command line
185a937b6aaSMarkus Armbruster# and via the QMP monitor during the preconfig state.  The command is
186a937b6aaSMarkus Armbruster# only available during the preconfig state (i.e. when the --preconfig
187a937b6aaSMarkus Armbruster# command line option was in use).
188047f7038SIgor Mammedov#
1899fb49daaSMarkus Armbruster# Features:
190a937b6aaSMarkus Armbruster#
1919fb49daaSMarkus Armbruster# @unstable: This command is experimental.
1929fb49daaSMarkus Armbruster#
193433a4fdcSMarkus Armbruster# Since: 3.0
194047f7038SIgor Mammedov#
195047f7038SIgor Mammedov# Example:
196047f7038SIgor Mammedov#
197361ac948SMarkus Armbruster#     -> { "execute": "x-exit-preconfig" }
198047f7038SIgor Mammedov#     <- { "return": {} }
199047f7038SIgor Mammedov##
2009fb49daaSMarkus Armbruster{ 'command': 'x-exit-preconfig', 'allow-preconfig': true,
2019fb49daaSMarkus Armbruster  'features': [ 'unstable' ] }
202047f7038SIgor Mammedov
203047f7038SIgor Mammedov##
204112ed241SMarkus Armbruster# @human-monitor-command:
205112ed241SMarkus Armbruster#
206112ed241SMarkus Armbruster# Execute a command on the human monitor and return the output.
207112ed241SMarkus Armbruster#
208112ed241SMarkus Armbruster# @command-line: the command to execute in the human monitor
209112ed241SMarkus Armbruster#
210112ed241SMarkus Armbruster# @cpu-index: The CPU to use for commands that require an implicit CPU
211112ed241SMarkus Armbruster#
2125f76a7aaSPeter Krempa# Features:
213a937b6aaSMarkus Armbruster#
2145f76a7aaSPeter Krempa# @savevm-monitor-nodes: If present, HMP command savevm only snapshots
215a937b6aaSMarkus Armbruster#     monitor-owned nodes if they have no parents.  This allows the
216a937b6aaSMarkus Armbruster#     use of 'savevm' with -blockdev.  (since 4.2)
2175f76a7aaSPeter Krempa#
218112ed241SMarkus Armbruster# Returns: the output of the command as a string
219112ed241SMarkus Armbruster#
2209bc6e893SMarkus Armbruster# Since: 0.14
221112ed241SMarkus Armbruster#
222112ed241SMarkus Armbruster# Notes: This command only exists as a stop-gap.  Its use is highly
223a937b6aaSMarkus Armbruster#     discouraged.  The semantics of this command are not guaranteed:
224a937b6aaSMarkus Armbruster#     this means that command names, arguments and responses can
225a937b6aaSMarkus Armbruster#     change or be removed at ANY time.  Applications that rely on
226a937b6aaSMarkus Armbruster#     long term stability guarantees should NOT use this command.
227112ed241SMarkus Armbruster#
228112ed241SMarkus Armbruster#     Known limitations:
229112ed241SMarkus Armbruster#
230a937b6aaSMarkus Armbruster#     * This command is stateless, this means that commands that
231a937b6aaSMarkus Armbruster#       depend on state information (such as getfd) might not work
232112ed241SMarkus Armbruster#
233112ed241SMarkus Armbruster#     * Commands that prompt the user for data don't currently work
234112ed241SMarkus Armbruster#
235112ed241SMarkus Armbruster# Example:
236112ed241SMarkus Armbruster#
237112ed241SMarkus Armbruster#     -> { "execute": "human-monitor-command",
238112ed241SMarkus Armbruster#          "arguments": { "command-line": "info kvm" } }
239112ed241SMarkus Armbruster#     <- { "return": "kvm support: enabled\r\n" }
240112ed241SMarkus Armbruster##
241112ed241SMarkus Armbruster{ 'command': 'human-monitor-command',
242112ed241SMarkus Armbruster  'data': {'command-line': 'str', '*cpu-index': 'int'},
2435f76a7aaSPeter Krempa  'returns': 'str',
2445f76a7aaSPeter Krempa  'features': [ 'savevm-monitor-nodes' ] }
245112ed241SMarkus Armbruster
246112ed241SMarkus Armbruster##
247112ed241SMarkus Armbruster# @getfd:
248112ed241SMarkus Armbruster#
249112ed241SMarkus Armbruster# Receive a file descriptor via SCM rights and assign it a name
250112ed241SMarkus Armbruster#
251112ed241SMarkus Armbruster# @fdname: file descriptor name
252112ed241SMarkus Armbruster#
2539bc6e893SMarkus Armbruster# Since: 0.14
254112ed241SMarkus Armbruster#
255a937b6aaSMarkus Armbruster# Notes: If @fdname already exists, the file descriptor assigned to it
256a937b6aaSMarkus Armbruster#     will be closed and replaced by the received file descriptor.
257112ed241SMarkus Armbruster#
258a937b6aaSMarkus Armbruster#     The 'closefd' command can be used to explicitly close the file
259a937b6aaSMarkus Armbruster#     descriptor when it is no longer needed.
260112ed241SMarkus Armbruster#
261112ed241SMarkus Armbruster# Example:
262112ed241SMarkus Armbruster#
263112ed241SMarkus Armbruster#     -> { "execute": "getfd", "arguments": { "fdname": "fd1" } }
264112ed241SMarkus Armbruster#     <- { "return": {} }
265112ed241SMarkus Armbruster##
2664bf21c7fSMarc-André Lureau{ 'command': 'getfd', 'data': {'fdname': 'str'}, 'if': 'CONFIG_POSIX' }
267112ed241SMarkus Armbruster
268112ed241SMarkus Armbruster##
2694cda177cSMarc-André Lureau# @get-win32-socket:
2704cda177cSMarc-André Lureau#
2714cda177cSMarc-André Lureau# Add a socket that was duplicated to QEMU process with
2724cda177cSMarc-André Lureau# WSADuplicateSocketW() via WSASocket() & WSAPROTOCOL_INFOW structure
2734cda177cSMarc-André Lureau# and assign it a name (the SOCKET is associated with a CRT file
2744cda177cSMarc-André Lureau# descriptor)
2754cda177cSMarc-André Lureau#
2764cda177cSMarc-André Lureau# @info: the WSAPROTOCOL_INFOW structure (encoded in base64)
2774cda177cSMarc-André Lureau#
2784cda177cSMarc-André Lureau# @fdname: file descriptor name
2794cda177cSMarc-André Lureau#
2804cda177cSMarc-André Lureau# Since: 8.0
2814cda177cSMarc-André Lureau#
282a937b6aaSMarkus Armbruster# Notes: If @fdname already exists, the file descriptor assigned to it
283a937b6aaSMarkus Armbruster#     will be closed and replaced by the received file descriptor.
2844cda177cSMarc-André Lureau#
285a937b6aaSMarkus Armbruster#     The 'closefd' command can be used to explicitly close the file
286a937b6aaSMarkus Armbruster#     descriptor when it is no longer needed.
2874cda177cSMarc-André Lureau#
2884cda177cSMarc-André Lureau# Example:
2894cda177cSMarc-André Lureau#
2904cda177cSMarc-André Lureau#     -> { "execute": "get-win32-socket", "arguments": { "info": "abcd123..", fdname": "skclient" } }
2914cda177cSMarc-André Lureau#     <- { "return": {} }
2924cda177cSMarc-André Lureau##
2934cda177cSMarc-André Lureau{ 'command': 'get-win32-socket', 'data': {'info': 'str', 'fdname': 'str'}, 'if': 'CONFIG_WIN32' }
2944cda177cSMarc-André Lureau
2954cda177cSMarc-André Lureau##
296112ed241SMarkus Armbruster# @closefd:
297112ed241SMarkus Armbruster#
298112ed241SMarkus Armbruster# Close a file descriptor previously passed via SCM rights
299112ed241SMarkus Armbruster#
300112ed241SMarkus Armbruster# @fdname: file descriptor name
301112ed241SMarkus Armbruster#
3029bc6e893SMarkus Armbruster# Since: 0.14
303112ed241SMarkus Armbruster#
304112ed241SMarkus Armbruster# Example:
305112ed241SMarkus Armbruster#
306112ed241SMarkus Armbruster#     -> { "execute": "closefd", "arguments": { "fdname": "fd1" } }
307112ed241SMarkus Armbruster#     <- { "return": {} }
308112ed241SMarkus Armbruster##
309112ed241SMarkus Armbruster{ 'command': 'closefd', 'data': {'fdname': 'str'} }
310112ed241SMarkus Armbruster
311112ed241SMarkus Armbruster##
312112ed241SMarkus Armbruster# @AddfdInfo:
313112ed241SMarkus Armbruster#
314112ed241SMarkus Armbruster# Information about a file descriptor that was added to an fd set.
315112ed241SMarkus Armbruster#
316112ed241SMarkus Armbruster# @fdset-id: The ID of the fd set that @fd was added to.
317112ed241SMarkus Armbruster#
318a937b6aaSMarkus Armbruster# @fd: The file descriptor that was received via SCM rights and added
319a937b6aaSMarkus Armbruster#     to the fd set.
320112ed241SMarkus Armbruster#
3219bc6e893SMarkus Armbruster# Since: 1.2
322112ed241SMarkus Armbruster##
323112ed241SMarkus Armbruster{ 'struct': 'AddfdInfo', 'data': {'fdset-id': 'int', 'fd': 'int'} }
324112ed241SMarkus Armbruster
325112ed241SMarkus Armbruster##
326112ed241SMarkus Armbruster# @add-fd:
327112ed241SMarkus Armbruster#
328112ed241SMarkus Armbruster# Add a file descriptor, that was passed via SCM rights, to an fd set.
329112ed241SMarkus Armbruster#
330112ed241SMarkus Armbruster# @fdset-id: The ID of the fd set to add the file descriptor to.
331112ed241SMarkus Armbruster#
332112ed241SMarkus Armbruster# @opaque: A free-form string that can be used to describe the fd.
333112ed241SMarkus Armbruster#
334a937b6aaSMarkus Armbruster# Returns:
335e2c1dcbcSMarkus Armbruster#     @AddfdInfo
3362746f060SMarkus Armbruster#
3372746f060SMarkus Armbruster# Errors:
33871568864SMarkus Armbruster#     - If file descriptor was not received, GenericError
33971568864SMarkus Armbruster#     - If @fdset-id is a negative value, GenericError
340112ed241SMarkus Armbruster#
3411ed1d4d6SMarkus Armbruster# Notes:
3421ed1d4d6SMarkus Armbruster#     The list of fd sets is shared by all monitor connections.
343112ed241SMarkus Armbruster#
344112ed241SMarkus Armbruster#     If @fdset-id is not specified, a new fd set will be created.
345112ed241SMarkus Armbruster#
3469bc6e893SMarkus Armbruster# Since: 1.2
347112ed241SMarkus Armbruster#
348112ed241SMarkus Armbruster# Example:
349112ed241SMarkus Armbruster#
350112ed241SMarkus Armbruster#     -> { "execute": "add-fd", "arguments": { "fdset-id": 1 } }
351112ed241SMarkus Armbruster#     <- { "return": { "fdset-id": 1, "fd": 3 } }
352112ed241SMarkus Armbruster##
353b0ddeba2SMarc-André Lureau{ 'command': 'add-fd',
354b0ddeba2SMarc-André Lureau  'data': { '*fdset-id': 'int',
355b0ddeba2SMarc-André Lureau            '*opaque': 'str' },
356112ed241SMarkus Armbruster  'returns': 'AddfdInfo' }
357112ed241SMarkus Armbruster
358112ed241SMarkus Armbruster##
359112ed241SMarkus Armbruster# @remove-fd:
360112ed241SMarkus Armbruster#
361112ed241SMarkus Armbruster# Remove a file descriptor from an fd set.
362112ed241SMarkus Armbruster#
363112ed241SMarkus Armbruster# @fdset-id: The ID of the fd set that the file descriptor belongs to.
364112ed241SMarkus Armbruster#
365112ed241SMarkus Armbruster# @fd: The file descriptor that is to be removed.
366112ed241SMarkus Armbruster#
3672746f060SMarkus Armbruster# Errors:
36871568864SMarkus Armbruster#     - If @fdset-id or @fd is not found, GenericError
369112ed241SMarkus Armbruster#
3709bc6e893SMarkus Armbruster# Since: 1.2
371112ed241SMarkus Armbruster#
3721ed1d4d6SMarkus Armbruster# Notes:
3731ed1d4d6SMarkus Armbruster#     The list of fd sets is shared by all monitor connections.
374112ed241SMarkus Armbruster#
3751ed1d4d6SMarkus Armbruster#     If @fd is not specified, all file descriptors in @fdset-id will
3761ed1d4d6SMarkus Armbruster#     be removed.
377112ed241SMarkus Armbruster#
378112ed241SMarkus Armbruster# Example:
379112ed241SMarkus Armbruster#
380112ed241SMarkus Armbruster#     -> { "execute": "remove-fd", "arguments": { "fdset-id": 1, "fd": 3 } }
381112ed241SMarkus Armbruster#     <- { "return": {} }
382112ed241SMarkus Armbruster##
383112ed241SMarkus Armbruster{ 'command': 'remove-fd', 'data': {'fdset-id': 'int', '*fd': 'int'} }
384112ed241SMarkus Armbruster
385112ed241SMarkus Armbruster##
386112ed241SMarkus Armbruster# @FdsetFdInfo:
387112ed241SMarkus Armbruster#
388112ed241SMarkus Armbruster# Information about a file descriptor that belongs to an fd set.
389112ed241SMarkus Armbruster#
390112ed241SMarkus Armbruster# @fd: The file descriptor value.
391112ed241SMarkus Armbruster#
392112ed241SMarkus Armbruster# @opaque: A free-form string that can be used to describe the fd.
393112ed241SMarkus Armbruster#
3949bc6e893SMarkus Armbruster# Since: 1.2
395112ed241SMarkus Armbruster##
396112ed241SMarkus Armbruster{ 'struct': 'FdsetFdInfo',
397112ed241SMarkus Armbruster  'data': {'fd': 'int', '*opaque': 'str'} }
398112ed241SMarkus Armbruster
399112ed241SMarkus Armbruster##
400112ed241SMarkus Armbruster# @FdsetInfo:
401112ed241SMarkus Armbruster#
402112ed241SMarkus Armbruster# Information about an fd set.
403112ed241SMarkus Armbruster#
404112ed241SMarkus Armbruster# @fdset-id: The ID of the fd set.
405112ed241SMarkus Armbruster#
406112ed241SMarkus Armbruster# @fds: A list of file descriptors that belong to this fd set.
407112ed241SMarkus Armbruster#
4089bc6e893SMarkus Armbruster# Since: 1.2
409112ed241SMarkus Armbruster##
410112ed241SMarkus Armbruster{ 'struct': 'FdsetInfo',
411112ed241SMarkus Armbruster  'data': {'fdset-id': 'int', 'fds': ['FdsetFdInfo']} }
412112ed241SMarkus Armbruster
413112ed241SMarkus Armbruster##
414112ed241SMarkus Armbruster# @query-fdsets:
415112ed241SMarkus Armbruster#
416112ed241SMarkus Armbruster# Return information describing all fd sets.
417112ed241SMarkus Armbruster#
418112ed241SMarkus Armbruster# Returns: A list of @FdsetInfo
419112ed241SMarkus Armbruster#
4209bc6e893SMarkus Armbruster# Since: 1.2
421112ed241SMarkus Armbruster#
422112ed241SMarkus Armbruster# Note: The list of fd sets is shared by all monitor connections.
423112ed241SMarkus Armbruster#
424112ed241SMarkus Armbruster# Example:
425112ed241SMarkus Armbruster#
426112ed241SMarkus Armbruster#     -> { "execute": "query-fdsets" }
427112ed241SMarkus Armbruster#     <- { "return": [
428112ed241SMarkus Armbruster#            {
429112ed241SMarkus Armbruster#              "fds": [
430112ed241SMarkus Armbruster#                {
431112ed241SMarkus Armbruster#                  "fd": 30,
432112ed241SMarkus Armbruster#                  "opaque": "rdonly:/path/to/file"
433112ed241SMarkus Armbruster#                },
434112ed241SMarkus Armbruster#                {
435112ed241SMarkus Armbruster#                  "fd": 24,
436112ed241SMarkus Armbruster#                  "opaque": "rdwr:/path/to/file"
437112ed241SMarkus Armbruster#                }
438112ed241SMarkus Armbruster#              ],
439112ed241SMarkus Armbruster#              "fdset-id": 1
440112ed241SMarkus Armbruster#            },
441112ed241SMarkus Armbruster#            {
442112ed241SMarkus Armbruster#              "fds": [
443112ed241SMarkus Armbruster#                {
444112ed241SMarkus Armbruster#                  "fd": 28
445112ed241SMarkus Armbruster#                },
446112ed241SMarkus Armbruster#                {
447112ed241SMarkus Armbruster#                  "fd": 29
448112ed241SMarkus Armbruster#                }
449112ed241SMarkus Armbruster#              ],
450112ed241SMarkus Armbruster#              "fdset-id": 0
451112ed241SMarkus Armbruster#            }
452112ed241SMarkus Armbruster#          ]
453112ed241SMarkus Armbruster#        }
454112ed241SMarkus Armbruster##
455112ed241SMarkus Armbruster{ 'command': 'query-fdsets', 'returns': ['FdsetInfo'] }
456112ed241SMarkus Armbruster
457112ed241SMarkus Armbruster##
458112ed241SMarkus Armbruster# @CommandLineParameterType:
459112ed241SMarkus Armbruster#
460112ed241SMarkus Armbruster# Possible types for an option parameter.
461112ed241SMarkus Armbruster#
462112ed241SMarkus Armbruster# @string: accepts a character string
463112ed241SMarkus Armbruster#
464112ed241SMarkus Armbruster# @boolean: accepts "on" or "off"
465112ed241SMarkus Armbruster#
466112ed241SMarkus Armbruster# @number: accepts a number
467112ed241SMarkus Armbruster#
468112ed241SMarkus Armbruster# @size: accepts a number followed by an optional suffix (K)ilo,
469112ed241SMarkus Armbruster#     (M)ega, (G)iga, (T)era
470112ed241SMarkus Armbruster#
471112ed241SMarkus Armbruster# Since: 1.5
472112ed241SMarkus Armbruster##
473112ed241SMarkus Armbruster{ 'enum': 'CommandLineParameterType',
474112ed241SMarkus Armbruster  'data': ['string', 'boolean', 'number', 'size'] }
475112ed241SMarkus Armbruster
476112ed241SMarkus Armbruster##
477112ed241SMarkus Armbruster# @CommandLineParameterInfo:
478112ed241SMarkus Armbruster#
479112ed241SMarkus Armbruster# Details about a single parameter of a command line option.
480112ed241SMarkus Armbruster#
481112ed241SMarkus Armbruster# @name: parameter name
482112ed241SMarkus Armbruster#
483112ed241SMarkus Armbruster# @type: parameter @CommandLineParameterType
484112ed241SMarkus Armbruster#
485112ed241SMarkus Armbruster# @help: human readable text string, not suitable for parsing.
486112ed241SMarkus Armbruster#
487112ed241SMarkus Armbruster# @default: default value string (since 2.1)
488112ed241SMarkus Armbruster#
489112ed241SMarkus Armbruster# Since: 1.5
490112ed241SMarkus Armbruster##
491112ed241SMarkus Armbruster{ 'struct': 'CommandLineParameterInfo',
492112ed241SMarkus Armbruster  'data': { 'name': 'str',
493112ed241SMarkus Armbruster            'type': 'CommandLineParameterType',
494112ed241SMarkus Armbruster            '*help': 'str',
495112ed241SMarkus Armbruster            '*default': 'str' } }
496112ed241SMarkus Armbruster
497112ed241SMarkus Armbruster##
498112ed241SMarkus Armbruster# @CommandLineOptionInfo:
499112ed241SMarkus Armbruster#
500a937b6aaSMarkus Armbruster# Details about a command line option, including its list of parameter
501a937b6aaSMarkus Armbruster# details
502112ed241SMarkus Armbruster#
503112ed241SMarkus Armbruster# @option: option name
504112ed241SMarkus Armbruster#
505112ed241SMarkus Armbruster# @parameters: an array of @CommandLineParameterInfo
506112ed241SMarkus Armbruster#
507112ed241SMarkus Armbruster# Since: 1.5
508112ed241SMarkus Armbruster##
509112ed241SMarkus Armbruster{ 'struct': 'CommandLineOptionInfo',
510112ed241SMarkus Armbruster  'data': { 'option': 'str', 'parameters': ['CommandLineParameterInfo'] } }
511112ed241SMarkus Armbruster
512112ed241SMarkus Armbruster##
513112ed241SMarkus Armbruster# @query-command-line-options:
514112ed241SMarkus Armbruster#
515112ed241SMarkus Armbruster# Query command line option schema.
516112ed241SMarkus Armbruster#
517112ed241SMarkus Armbruster# @option: option name
518112ed241SMarkus Armbruster#
519a937b6aaSMarkus Armbruster# Returns: list of @CommandLineOptionInfo for all options (or for the
5202746f060SMarkus Armbruster#     given @option).
5212746f060SMarkus Armbruster#
5222746f060SMarkus Armbruster# Errors:
5232746f060SMarkus Armbruster#     - if the given @option doesn't exist
524112ed241SMarkus Armbruster#
525112ed241SMarkus Armbruster# Since: 1.5
526112ed241SMarkus Armbruster#
527112ed241SMarkus Armbruster# Example:
528112ed241SMarkus Armbruster#
529112ed241SMarkus Armbruster#     -> { "execute": "query-command-line-options",
530112ed241SMarkus Armbruster#          "arguments": { "option": "option-rom" } }
531112ed241SMarkus Armbruster#     <- { "return": [
532112ed241SMarkus Armbruster#             {
533112ed241SMarkus Armbruster#                 "parameters": [
534112ed241SMarkus Armbruster#                     {
535112ed241SMarkus Armbruster#                         "name": "romfile",
536112ed241SMarkus Armbruster#                         "type": "string"
537112ed241SMarkus Armbruster#                     },
538112ed241SMarkus Armbruster#                     {
539112ed241SMarkus Armbruster#                         "name": "bootindex",
540112ed241SMarkus Armbruster#                         "type": "number"
541112ed241SMarkus Armbruster#                     }
542112ed241SMarkus Armbruster#                 ],
543112ed241SMarkus Armbruster#                 "option": "option-rom"
544112ed241SMarkus Armbruster#             }
545112ed241SMarkus Armbruster#          ]
546112ed241SMarkus Armbruster#        }
547112ed241SMarkus Armbruster##
548b0ddeba2SMarc-André Lureau{'command': 'query-command-line-options',
549b0ddeba2SMarc-André Lureau 'data': {'*option': 'str'},
550d6fe3d02SIgor Mammedov 'returns': ['CommandLineOptionInfo'],
551d6fe3d02SIgor Mammedov 'allow-preconfig': true}
5521f216b8cSPeter Maydell
5531f216b8cSPeter Maydell##
5541f216b8cSPeter Maydell# @RTC_CHANGE:
5551f216b8cSPeter Maydell#
5561f216b8cSPeter Maydell# Emitted when the guest changes the RTC time.
5571f216b8cSPeter Maydell#
558a937b6aaSMarkus Armbruster# @offset: offset in seconds between base RTC clock (as specified by
559a937b6aaSMarkus Armbruster#     -rtc base), and new RTC clock value
5601f216b8cSPeter Maydell#
5612beb1e5fSMarkus Armbruster# @qom-path: path to the RTC object in the QOM tree
5622beb1e5fSMarkus Armbruster#
563a937b6aaSMarkus Armbruster# Note: This event is rate-limited.  It is not guaranteed that the RTC
564a937b6aaSMarkus Armbruster#     in the system implements this event, or even that the system has
565a937b6aaSMarkus Armbruster#     an RTC at all.
5661f216b8cSPeter Maydell#
5671f216b8cSPeter Maydell# Since: 0.13
5681f216b8cSPeter Maydell#
5691f216b8cSPeter Maydell# Example:
5701f216b8cSPeter Maydell#
5711f216b8cSPeter Maydell#     <- { "event": "RTC_CHANGE",
5721f216b8cSPeter Maydell#          "data": { "offset": 78 },
5731f216b8cSPeter Maydell#          "timestamp": { "seconds": 1267020223, "microseconds": 435656 } }
5741f216b8cSPeter Maydell##
5751f216b8cSPeter Maydell{ 'event': 'RTC_CHANGE',
5762beb1e5fSMarkus Armbruster  'data': { 'offset': 'int', 'qom-path': 'str' } }
5779fb3fba1SJagannathan Raman
5789fb3fba1SJagannathan Raman##
5799fb3fba1SJagannathan Raman# @VFU_CLIENT_HANGUP:
5809fb3fba1SJagannathan Raman#
5819fb3fba1SJagannathan Raman# Emitted when the client of a TYPE_VFIO_USER_SERVER closes the
5829fb3fba1SJagannathan Raman# communication channel
5839fb3fba1SJagannathan Raman#
584a937b6aaSMarkus Armbruster# @vfu-id: ID of the TYPE_VFIO_USER_SERVER object.  It is the last
585a937b6aaSMarkus Armbruster#     component of @vfu-qom-path referenced below
5869fb3fba1SJagannathan Raman#
587a937b6aaSMarkus Armbruster# @vfu-qom-path: path to the TYPE_VFIO_USER_SERVER object in the QOM
588a937b6aaSMarkus Armbruster#     tree
5899fb3fba1SJagannathan Raman#
5909fb3fba1SJagannathan Raman# @dev-id: ID of attached PCI device
5919fb3fba1SJagannathan Raman#
5929fb3fba1SJagannathan Raman# @dev-qom-path: path to attached PCI device in the QOM tree
5939fb3fba1SJagannathan Raman#
5949fb3fba1SJagannathan Raman# Since: 7.1
5959fb3fba1SJagannathan Raman#
5969fb3fba1SJagannathan Raman# Example:
5979fb3fba1SJagannathan Raman#
5989fb3fba1SJagannathan Raman#     <- { "event": "VFU_CLIENT_HANGUP",
5999fb3fba1SJagannathan Raman#          "data": { "vfu-id": "vfu1",
6009fb3fba1SJagannathan Raman#                    "vfu-qom-path": "/objects/vfu1",
6019fb3fba1SJagannathan Raman#                    "dev-id": "sas1",
6029fb3fba1SJagannathan Raman#                    "dev-qom-path": "/machine/peripheral/sas1" },
6039fb3fba1SJagannathan Raman#          "timestamp": { "seconds": 1265044230, "microseconds": 450486 } }
6049fb3fba1SJagannathan Raman##
6059fb3fba1SJagannathan Raman{ 'event': 'VFU_CLIENT_HANGUP',
6069fb3fba1SJagannathan Raman  'data': { 'vfu-id': 'str', 'vfu-qom-path': 'str',
6079fb3fba1SJagannathan Raman            'dev-id': 'str', 'dev-qom-path': 'str' } }
608