mirror of
https://github.com/Motorhead1991/qemu.git
synced 2026-02-03 14:50:40 -07:00
The new QMP documentation generator wants to parse all examples as "QMP". We have an existing QMP lexer in docs/sphinx/qmp_lexer.py (Seen in-use here: https://qemu-project.gitlab.io/qemu/interop/bitmaps.html) that allows the use of "->", "<-" and "..." tokens to denote QMP protocol flow with elisions, but otherwise defers to the JSON lexer. To utilize this lexer for the existing QAPI documentation, we need them to conform to a standard so that they lex and render correctly. Once the QMP lexer is active for examples, errant QMP/JSON will produce warning messages and fail the build. Fix any invalid JSON found in QAPI documentation (identified by attempting to lex all examples as QMP; see subsequent commits). Additionally, elisions must be standardized for the QMP lexer; they must be represented as the value "...", so three examples have been adjusted to support that format here. Signed-off-by: John Snow <jsnow@redhat.com> Reviewed-by: Markus Armbruster <armbru@redhat.com> Message-ID: <20240626222128.406106-9-jsnow@redhat.com> Signed-off-by: Markus Armbruster <armbru@redhat.com>
212 lines
4.7 KiB
Python
212 lines
4.7 KiB
Python
# -*- Mode: Python -*-
|
|
# vim: filetype=python
|
|
#
|
|
|
|
##
|
|
# = QMP monitor control
|
|
##
|
|
|
|
##
|
|
# @qmp_capabilities:
|
|
#
|
|
# Enable QMP capabilities.
|
|
#
|
|
# @enable: An optional list of QMPCapability values to enable. The
|
|
# client must not enable any capability that is not mentioned in
|
|
# the QMP greeting message. If the field is not provided, it
|
|
# means no QMP capabilities will be enabled. (since 2.12)
|
|
#
|
|
# Example:
|
|
#
|
|
# -> { "execute": "qmp_capabilities",
|
|
# "arguments": { "enable": [ "oob" ] } }
|
|
# <- { "return": {} }
|
|
#
|
|
# Notes: This command is valid exactly when first connecting: it must
|
|
# be issued before any other command will be accepted, and will
|
|
# fail once the monitor is accepting other commands. (see qemu
|
|
# docs/interop/qmp-spec.rst)
|
|
#
|
|
# The QMP client needs to explicitly enable QMP capabilities,
|
|
# otherwise all the QMP capabilities will be turned off by
|
|
# default.
|
|
#
|
|
# Since: 0.13
|
|
##
|
|
{ 'command': 'qmp_capabilities',
|
|
'data': { '*enable': [ 'QMPCapability' ] },
|
|
'allow-preconfig': true }
|
|
|
|
##
|
|
# @QMPCapability:
|
|
#
|
|
# Enumeration of capabilities to be advertised during initial client
|
|
# connection, used for agreeing on particular QMP extension behaviors.
|
|
#
|
|
# @oob: QMP ability to support out-of-band requests. (Please refer to
|
|
# qmp-spec.rst for more information on OOB)
|
|
#
|
|
# Since: 2.12
|
|
##
|
|
{ 'enum': 'QMPCapability',
|
|
'data': [ 'oob' ] }
|
|
|
|
##
|
|
# @VersionTriple:
|
|
#
|
|
# A three-part version number.
|
|
#
|
|
# @major: The major version number.
|
|
#
|
|
# @minor: The minor version number.
|
|
#
|
|
# @micro: The micro version number.
|
|
#
|
|
# Since: 2.4
|
|
##
|
|
{ 'struct': 'VersionTriple',
|
|
'data': {'major': 'int', 'minor': 'int', 'micro': 'int'} }
|
|
|
|
##
|
|
# @VersionInfo:
|
|
#
|
|
# A description of QEMU's version.
|
|
#
|
|
# @qemu: The version of QEMU. By current convention, a micro version
|
|
# of 50 signifies a development branch. A micro version greater
|
|
# than or equal to 90 signifies a release candidate for the next
|
|
# minor version. A micro version of less than 50 signifies a
|
|
# stable release.
|
|
#
|
|
# @package: QEMU will always set this field to an empty string.
|
|
# Downstream versions of QEMU should set this to a non-empty
|
|
# string. The exact format depends on the downstream however it
|
|
# highly recommended that a unique name is used.
|
|
#
|
|
# Since: 0.14
|
|
##
|
|
{ 'struct': 'VersionInfo',
|
|
'data': {'qemu': 'VersionTriple', 'package': 'str'} }
|
|
|
|
##
|
|
# @query-version:
|
|
#
|
|
# Returns the current version of QEMU.
|
|
#
|
|
# Returns: A @VersionInfo object describing the current version of
|
|
# QEMU.
|
|
#
|
|
# Since: 0.14
|
|
#
|
|
# Example:
|
|
#
|
|
# -> { "execute": "query-version" }
|
|
# <- {
|
|
# "return":{
|
|
# "qemu":{
|
|
# "major":0,
|
|
# "minor":11,
|
|
# "micro":5
|
|
# },
|
|
# "package":""
|
|
# }
|
|
# }
|
|
##
|
|
{ 'command': 'query-version', 'returns': 'VersionInfo',
|
|
'allow-preconfig': true }
|
|
|
|
##
|
|
# @CommandInfo:
|
|
#
|
|
# Information about a QMP command
|
|
#
|
|
# @name: The command name
|
|
#
|
|
# Since: 0.14
|
|
##
|
|
{ 'struct': 'CommandInfo', 'data': {'name': 'str'} }
|
|
|
|
##
|
|
# @query-commands:
|
|
#
|
|
# Return a list of supported QMP commands by this server
|
|
#
|
|
# Returns: A list of @CommandInfo for all supported commands
|
|
#
|
|
# Since: 0.14
|
|
#
|
|
# Example:
|
|
#
|
|
# -> { "execute": "query-commands" }
|
|
# <- {
|
|
# "return":[
|
|
# {
|
|
# "name":"query-balloon"
|
|
# },
|
|
# {
|
|
# "name":"system_powerdown"
|
|
# },
|
|
# ...
|
|
# ]
|
|
# }
|
|
#
|
|
# Note: This example has been shortened as the real response is too
|
|
# long.
|
|
##
|
|
{ 'command': 'query-commands', 'returns': ['CommandInfo'],
|
|
'allow-preconfig': true }
|
|
|
|
##
|
|
# @quit:
|
|
#
|
|
# This command will cause the QEMU process to exit gracefully. While
|
|
# every attempt is made to send the QMP response before terminating,
|
|
# this is not guaranteed. When using this interface, a premature EOF
|
|
# would not be unexpected.
|
|
#
|
|
# Since: 0.14
|
|
#
|
|
# Example:
|
|
#
|
|
# -> { "execute": "quit" }
|
|
# <- { "return": {} }
|
|
##
|
|
{ 'command': 'quit',
|
|
'allow-preconfig': true }
|
|
|
|
##
|
|
# @MonitorMode:
|
|
#
|
|
# An enumeration of monitor modes.
|
|
#
|
|
# @readline: HMP monitor (human-oriented command line interface)
|
|
#
|
|
# @control: QMP monitor (JSON-based machine interface)
|
|
#
|
|
# Since: 5.0
|
|
##
|
|
{ 'enum': 'MonitorMode', 'data': [ 'readline', 'control' ] }
|
|
|
|
##
|
|
# @MonitorOptions:
|
|
#
|
|
# Options to be used for adding a new monitor.
|
|
#
|
|
# @id: Name of the monitor
|
|
#
|
|
# @mode: Selects the monitor mode (default: readline in the system
|
|
# emulator, control in qemu-storage-daemon)
|
|
#
|
|
# @pretty: Enables pretty printing (QMP only)
|
|
#
|
|
# @chardev: Name of a character device to expose the monitor on
|
|
#
|
|
# Since: 5.0
|
|
##
|
|
{ 'struct': 'MonitorOptions',
|
|
'data': {
|
|
'*id': 'str',
|
|
'*mode': 'MonitorMode',
|
|
'*pretty': 'bool',
|
|
'chardev': 'str'
|
|
} }
|