mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 16:23:55 -06:00
qmp: introduce QMPCapability
There were no QMP capabilities defined. Define the first capability, "oob", to allow out-of-band messages. After this patch, we will allow QMP clients to enable QMP capabilities when sending the first "qmp_capabilities" command. Originally we are starting QMP session with no arguments like: { "execute": "qmp_capabilities" } Now we can enable some QMP capabilities using (take OOB as example, which is the only capability that we support): { "execute": "qmp_capabilities", "arguments": { "enable": [ "oob" ] } } When the "arguments" key is not provided, no capability is enabled. For capability "oob", the monitor needs to be run on a dedicated IO thread, otherwise the command will fail. For example, trying to enable OOB on a MUXed typed QMP monitor will fail. One thing to mention is that QMP capabilities are per-monitor, and also when the connection is closed due to some reason, the capabilities will be reset. Also, touch up qmp-test.c to test the new bits. Signed-off-by: Peter Xu <peterx@redhat.com> Message-Id: <20180309090006.10018-11-peterx@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> [eblake: touch up commit message] Signed-off-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
parent
a5ed352596
commit
02130314d8
3 changed files with 110 additions and 9 deletions
|
@ -10,21 +10,47 @@
|
|||
#
|
||||
# Enable QMP capabilities.
|
||||
#
|
||||
# Arguments: None.
|
||||
# Arguments:
|
||||
#
|
||||
# @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" }
|
||||
# -> { "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.txt)
|
||||
#
|
||||
# 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' }
|
||||
{ 'command': 'qmp_capabilities',
|
||||
'data': { '*enable': [ 'QMPCapability' ] } }
|
||||
|
||||
##
|
||||
# @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.txt for more information on OOB)
|
||||
#
|
||||
# Since: 2.12
|
||||
#
|
||||
##
|
||||
{ 'enum': 'QMPCapability',
|
||||
'data': [ 'oob' ] }
|
||||
|
||||
##
|
||||
# @VersionTriple:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue