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