14b48aaab9
Use the no-option form of ".. qmp-example::" to convert any Examples that do not have any form of caption or explanation whatsoever. Note that in a few cases, example sections are split into two or more separate example blocks. This is only done stylistically to create a delineation between two or more logically independent examples. See commit-3: "docs/qapidoc: create qmp-example directive", for a detailed explanation of this custom directive syntax. See commit+3: "qapi: remove "Example" doc section" for a detailed explanation of why. Note: an empty "TODO" line was added to announce-self to keep the example from floating up into the body; this will be addressed more rigorously in the new qapidoc generator. Signed-off-by: John Snow <jsnow@redhat.com> Message-ID: <20240717021312.606116-7-jsnow@redhat.com> Reviewed-by: Markus Armbruster <armbru@redhat.com> [Markup fixed in one place] Signed-off-by: Markus Armbruster <armbru@redhat.com>
166 lines
4.6 KiB
Python
166 lines
4.6 KiB
Python
# -*- Mode: Python -*-
|
|
# vim: filetype=python
|
|
#
|
|
# This work is licensed under the terms of the GNU GPL, version 2 or later.
|
|
# See the COPYING file in the top-level directory.
|
|
|
|
##
|
|
# = Device infrastructure (qdev)
|
|
##
|
|
|
|
{ 'include': 'qom.json' }
|
|
|
|
##
|
|
# @device-list-properties:
|
|
#
|
|
# List properties associated with a device.
|
|
#
|
|
# @typename: the type name of a device
|
|
#
|
|
# Returns: a list of ObjectPropertyInfo describing a devices
|
|
# properties
|
|
#
|
|
# .. note:: Objects can create properties at runtime, for example to
|
|
# describe links between different devices and/or objects. These
|
|
# properties are not included in the output of this command.
|
|
#
|
|
# Since: 1.2
|
|
##
|
|
{ 'command': 'device-list-properties',
|
|
'data': { 'typename': 'str'},
|
|
'returns': [ 'ObjectPropertyInfo' ] }
|
|
|
|
##
|
|
# @device_add:
|
|
#
|
|
# Add a device.
|
|
#
|
|
# @driver: the name of the new device's driver
|
|
#
|
|
# @bus: the device's parent bus (device tree path)
|
|
#
|
|
# @id: the device's ID, must be unique
|
|
#
|
|
# Features:
|
|
#
|
|
# @json-cli: If present, the "-device" command line option supports
|
|
# JSON syntax with a structure identical to the arguments of this
|
|
# command.
|
|
#
|
|
# @json-cli-hotplug: If present, the "-device" command line option
|
|
# supports JSON syntax without the reference counting leak that
|
|
# broke hot-unplug
|
|
#
|
|
# .. admonition:: Notes
|
|
#
|
|
# 1. Additional arguments depend on the type.
|
|
#
|
|
# 2. For detailed information about this command, please refer to
|
|
# the 'docs/qdev-device-use.txt' file.
|
|
#
|
|
# 3. It's possible to list device properties by running QEMU with
|
|
# the ``-device DEVICE,help`` command-line argument, where DEVICE
|
|
# is the device's name.
|
|
#
|
|
# .. qmp-example::
|
|
#
|
|
# -> { "execute": "device_add",
|
|
# "arguments": { "driver": "e1000", "id": "net1",
|
|
# "bus": "pci.0",
|
|
# "mac": "52:54:00:12:34:56" } }
|
|
# <- { "return": {} }
|
|
#
|
|
# TODO: This command effectively bypasses QAPI completely due to its
|
|
# "additional arguments" business. It shouldn't have been added
|
|
# to the schema in this form. It should be qapified properly, or
|
|
# replaced by a properly qapified command.
|
|
#
|
|
# Since: 0.13
|
|
##
|
|
{ 'command': 'device_add',
|
|
'data': {'driver': 'str', '*bus': 'str', '*id': 'str'},
|
|
'gen': false, # so we can get the additional arguments
|
|
'features': ['json-cli', 'json-cli-hotplug'] }
|
|
|
|
##
|
|
# @device_del:
|
|
#
|
|
# Remove a device from a guest
|
|
#
|
|
# @id: the device's ID or QOM path
|
|
#
|
|
# Errors:
|
|
# - If @id is not a valid device, DeviceNotFound
|
|
#
|
|
# .. note:: When this command completes, the device may not be removed
|
|
# from the guest. Hot removal is an operation that requires guest
|
|
# cooperation. This command merely requests that the guest begin the
|
|
# hot removal process. Completion of the device removal process is
|
|
# signaled with a DEVICE_DELETED event. Guest reset will
|
|
# automatically complete removal for all devices. If a guest-side
|
|
# error in the hot removal process is detected, the device will not
|
|
# be removed and a DEVICE_UNPLUG_GUEST_ERROR event is sent. Some
|
|
# errors cannot be detected.
|
|
#
|
|
# Since: 0.14
|
|
#
|
|
# .. qmp-example::
|
|
#
|
|
# -> { "execute": "device_del",
|
|
# "arguments": { "id": "net1" } }
|
|
# <- { "return": {} }
|
|
#
|
|
# .. qmp-example::
|
|
#
|
|
# -> { "execute": "device_del",
|
|
# "arguments": { "id": "/machine/peripheral-anon/device[0]" } }
|
|
# <- { "return": {} }
|
|
##
|
|
{ 'command': 'device_del', 'data': {'id': 'str'} }
|
|
|
|
##
|
|
# @DEVICE_DELETED:
|
|
#
|
|
# Emitted whenever the device removal completion is acknowledged by
|
|
# the guest. At this point, it's safe to reuse the specified device
|
|
# ID. Device removal can be initiated by the guest or by HMP/QMP
|
|
# commands.
|
|
#
|
|
# @device: the device's ID if it has one
|
|
#
|
|
# @path: the device's QOM path
|
|
#
|
|
# Since: 1.5
|
|
#
|
|
# .. qmp-example::
|
|
#
|
|
# <- { "event": "DEVICE_DELETED",
|
|
# "data": { "device": "virtio-net-pci-0",
|
|
# "path": "/machine/peripheral/virtio-net-pci-0" },
|
|
# "timestamp": { "seconds": 1265044230, "microseconds": 450486 } }
|
|
##
|
|
{ 'event': 'DEVICE_DELETED',
|
|
'data': { '*device': 'str', 'path': 'str' } }
|
|
|
|
##
|
|
# @DEVICE_UNPLUG_GUEST_ERROR:
|
|
#
|
|
# Emitted when a device hot unplug fails due to a guest reported
|
|
# error.
|
|
#
|
|
# @device: the device's ID if it has one
|
|
#
|
|
# @path: the device's QOM path
|
|
#
|
|
# Since: 6.2
|
|
#
|
|
# .. qmp-example::
|
|
#
|
|
# <- { "event": "DEVICE_UNPLUG_GUEST_ERROR",
|
|
# "data": { "device": "core1",
|
|
# "path": "/machine/peripheral/core1" },
|
|
# "timestamp": { "seconds": 1615570772, "microseconds": 202844 } }
|
|
##
|
|
{ 'event': 'DEVICE_UNPLUG_GUEST_ERROR',
|
|
'data': { '*device': 'str', 'path': 'str' } }
|