# -*- 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
#
# 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
#
# 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
#
# Notes: 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
#
# Examples:
#
#     -> { "execute": "device_del",
#          "arguments": { "id": "net1" } }
#     <- { "return": {} }
#
#     -> { "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
#
# 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
#
# 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' } }
