1# -*- Mode: Python -*- 2# vim: filetype=python 3# 4 5## 6# = QMP monitor control 7## 8 9## 10# @qmp_capabilities: 11# 12# Enable QMP capabilities. 13# 14# Arguments: 15# 16# @enable: An optional list of QMPCapability values to enable. The 17# client must not enable any capability that is not 18# mentioned in the QMP greeting message. If the field is not 19# provided, it means no QMP capabilities will be enabled. 20# (since 2.12) 21# 22# Example: 23# 24# -> { "execute": "qmp_capabilities", 25# "arguments": { "enable": [ "oob" ] } } 26# <- { "return": {} } 27# 28# Notes: This command is valid exactly when first connecting: it must be 29# issued before any other command will be accepted, and will fail once the 30# monitor is accepting other commands. (see qemu docs/interop/qmp-spec.txt) 31# 32# The QMP client needs to explicitly enable QMP capabilities, otherwise 33# all the QMP capabilities will be turned off by default. 34# 35# Since: 0.13 36## 37{ 'command': 'qmp_capabilities', 38 'data': { '*enable': [ 'QMPCapability' ] }, 39 'allow-preconfig': true } 40 41## 42# @QMPCapability: 43# 44# Enumeration of capabilities to be advertised during initial client 45# connection, used for agreeing on particular QMP extension behaviors. 46# 47# @oob: QMP ability to support out-of-band requests. 48# (Please refer to qmp-spec.txt for more information on OOB) 49# 50# Since: 2.12 51## 52{ 'enum': 'QMPCapability', 53 'data': [ 'oob' ] } 54 55## 56# @VersionTriple: 57# 58# A three-part version number. 59# 60# @major: The major version number. 61# 62# @minor: The minor version number. 63# 64# @micro: The micro version number. 65# 66# Since: 2.4 67## 68{ 'struct': 'VersionTriple', 69 'data': {'major': 'int', 'minor': 'int', 'micro': 'int'} } 70 71 72## 73# @VersionInfo: 74# 75# A description of QEMU's version. 76# 77# @qemu: The version of QEMU. By current convention, a micro 78# version of 50 signifies a development branch. A micro version 79# greater than or equal to 90 signifies a release candidate for 80# the next minor version. A micro version of less than 50 81# signifies a stable release. 82# 83# @package: QEMU will always set this field to an empty string. Downstream 84# versions of QEMU should set this to a non-empty string. The 85# exact format depends on the downstream however it highly 86# recommended that a unique name is used. 87# 88# Since: 0.14 89## 90{ 'struct': 'VersionInfo', 91 'data': {'qemu': 'VersionTriple', 'package': 'str'} } 92 93## 94# @query-version: 95# 96# Returns the current version of QEMU. 97# 98# Returns: A @VersionInfo object describing the current version of QEMU. 99# 100# Since: 0.14 101# 102# Example: 103# 104# -> { "execute": "query-version" } 105# <- { 106# "return":{ 107# "qemu":{ 108# "major":0, 109# "minor":11, 110# "micro":5 111# }, 112# "package":"" 113# } 114# } 115# 116## 117{ 'command': 'query-version', 'returns': 'VersionInfo', 118 'allow-preconfig': true } 119 120## 121# @CommandInfo: 122# 123# Information about a QMP command 124# 125# @name: The command name 126# 127# Since: 0.14 128## 129{ 'struct': 'CommandInfo', 'data': {'name': 'str'} } 130 131## 132# @query-commands: 133# 134# Return a list of supported QMP commands by this server 135# 136# Returns: A list of @CommandInfo for all supported commands 137# 138# Since: 0.14 139# 140# Example: 141# 142# -> { "execute": "query-commands" } 143# <- { 144# "return":[ 145# { 146# "name":"query-balloon" 147# }, 148# { 149# "name":"system_powerdown" 150# } 151# ] 152# } 153# 154# Note: This example has been shortened as the real response is too long. 155# 156## 157{ 'command': 'query-commands', 'returns': ['CommandInfo'], 158 'allow-preconfig': true } 159 160## 161# @quit: 162# 163# This command will cause the QEMU process to exit gracefully. While every 164# attempt is made to send the QMP response before terminating, this is not 165# guaranteed. When using this interface, a premature EOF would not be 166# unexpected. 167# 168# Since: 0.14 169# 170# Example: 171# 172# -> { "execute": "quit" } 173# <- { "return": {} } 174## 175{ 'command': 'quit', 176 'allow-preconfig': true } 177 178## 179# @MonitorMode: 180# 181# An enumeration of monitor modes. 182# 183# @readline: HMP monitor (human-oriented command line interface) 184# 185# @control: QMP monitor (JSON-based machine interface) 186# 187# Since: 5.0 188## 189{ 'enum': 'MonitorMode', 'data': [ 'readline', 'control' ] } 190 191## 192# @MonitorOptions: 193# 194# Options to be used for adding a new monitor. 195# 196# @id: Name of the monitor 197# 198# @mode: Selects the monitor mode (default: readline in the system 199# emulator, control in qemu-storage-daemon) 200# 201# @pretty: Enables pretty printing (QMP only) 202# 203# @chardev: Name of a character device to expose the monitor on 204# 205# Since: 5.0 206## 207{ 'struct': 'MonitorOptions', 208 'data': { 209 '*id': 'str', 210 '*mode': 'MonitorMode', 211 '*pretty': 'bool', 212 'chardev': 'str' 213 } } 214