QAPI patches for 2016-12-05

-----BEGIN PGP SIGNATURE-----
 
 iQIcBAABAgAGBQJYRZjRAAoJEDhwtADrkYZTHRUP/0BdbRWckRFXD328qxUq2CwR
 GpZHqlsLme9OZk4DbPE0k4ZFtAzZzOvXZjMM3qGxE1VR28dwwBnGhBzubtFLGiDM
 MPx/r2JurFiOppi5K6D5YcHYyIjOEt6/W7GrS44dVXRal//+4rM89M0xeUpxOuXs
 H9IyeBHqa3ItTS3XmseXvnLh3o8EdiHXnk4ENXWHsywKK3AhZhZFDKEoyG0B6SHE
 LK8tSilKz1Ik87xtjvRVZ/ga7hpG1NCyCWepVfJYDaw5AHUZd3fuhBaP3GuIPCDC
 Q9mUAchBhokbtaw/DBtd+Tovfc7id/ETxoAN9LA5KsGl6RwpC7f1jH/jmCWJgyIg
 HzzEMLCVo4KUlc6iVgle+t6LrMuaH284Ji6roLdWiZ91SFKKezG4ydSdA7IXQavs
 VHrbyvHq4uFYnHVcn+h+qN/x//cJ5E505KwxpAXBBpzj5R8HE2JwsB45jN3yIKUR
 aIeVJJkQRtxg47gX0PTjvbk1B6n4Mi3xunw0MDlcdMLFNlAonoovxXzuEOraZ66n
 0K6L11IHFJeShG5TA38wUSOFDkWvOkc5I9lgQHPPLa0zPXnmYo2GkwG3LNa0DtxI
 qZ7Wr5SmRwIoGrh3jZe1QZwIyDUNdZzbu8ObCvpWxFknWrl/JW4tU4qkv1HSgKQL
 A2isqdRfKYVXqkamGAf+
 =vFAX
 -----END PGP SIGNATURE-----

Merge remote-tracking branch 'armbru/tags/pull-qapi-2016-12-05' into staging

QAPI patches for 2016-12-05

# gpg: Signature made Mon 05 Dec 2016 04:41:53 PM GMT
# gpg:                using RSA key 0x3870B400EB918653
# gpg: Good signature from "Markus Armbruster <armbru@redhat.com>"
# gpg:                 aka "Markus Armbruster <armbru@pond.sub.org>"
# Primary key fingerprint: 354B C8B3 D7EB 2A6B 6867  4E5F 3870 B400 EB91 8653

* armbru/tags/pull-qapi-2016-12-05:
  qapi: add missing colon-ending for section name
  qapi: use one symbol per line
  qapi: fix various symbols mismatch in documentation
  qapi: fix missing symbol @prefix
  qapi: fix schema symbol sections
  qga/schema: fix double-return in doc
  tests: Avoid qobject_from_jsonf("%"PRId64)
  test-qga: Avoid qobject_from_jsonv("%"PRId64)
  qmp-event: Avoid qobject_from_jsonf("%"PRId64)

Message-id: 1480956313-31322-1-git-send-email-armbru@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
Stefan Hajnoczi 2016-12-06 09:49:51 +00:00
commit 8a844b2603
14 changed files with 406 additions and 398 deletions

File diff suppressed because it is too large Load Diff

View File

@ -6,7 +6,7 @@
{ 'include': 'common.json' }
##
# @SnapshotInfo
# @SnapshotInfo:
#
# @id: unique snapshot id
#
@ -213,7 +213,7 @@
'*filename': 'str' } }
##
# @BlockdevCacheInfo
# @BlockdevCacheInfo:
#
# Cache mode information for a block device
#
@ -378,7 +378,7 @@
# @offset: if present, the image file stores the data for this range in
# raw format at the given offset.
#
# Since 1.7
# Since: 1.7
##
{ 'struct': 'BlockDeviceMapEntry',
'data': { 'start': 'int', 'length': 'int', 'depth': 'int', 'zero': 'bool',
@ -790,7 +790,7 @@
'*node-name': 'str', 'password': 'str'} }
##
# @block_resize
# @block_resize:
#
# Resize a block image while a guest is running.
#
@ -812,7 +812,7 @@
'size': 'int' }}
##
# @NewImageMode
# @NewImageMode:
#
# An enumeration that tells QEMU how to set the backing file path in
# a new image file.
@ -829,7 +829,7 @@
'data': [ 'existing', 'absolute-paths' ] }
##
# @BlockdevSnapshotSync
# @BlockdevSnapshotSync:
#
# Either @device or @node-name must be set but not both.
#
@ -852,7 +852,7 @@
'*format': 'str', '*mode': 'NewImageMode' } }
##
# @BlockdevSnapshot
# @BlockdevSnapshot:
#
# @node: device or node name that will have a snapshot created.
#
@ -861,13 +861,13 @@
# It must not have a current backing file (this can be
# achieved by passing "backing": "" to blockdev-add).
#
# Since 2.5
# Since: 2.5
##
{ 'struct': 'BlockdevSnapshot',
'data': { 'node': 'str', 'overlay': 'str' } }
##
# @DriveBackup
# @DriveBackup:
#
# @job-id: #optional identifier for the newly-created block job. If
# omitted, the device name will be used. (Since 2.7)
@ -905,9 +905,9 @@
# default 'report' (no limitations, since this applies to
# a different block device than @device).
#
# Note that @on-source-error and @on-target-error only affect background I/O.
# If an error occurs during a guest write request, the device's rerror/werror
# actions will be used.
# Note: @on-source-error and @on-target-error only affect background
# I/O. If an error occurs during a guest write request, the device's
# rerror/werror actions will be used.
#
# Since: 1.6
##
@ -919,7 +919,7 @@
'*on-target-error': 'BlockdevOnError' } }
##
# @BlockdevBackup
# @BlockdevBackup:
#
# @job-id: #optional identifier for the newly-created block job. If
# omitted, the device name will be used. (Since 2.7)
@ -946,9 +946,9 @@
# default 'report' (no limitations, since this applies to
# a different block device than @device).
#
# Note that @on-source-error and @on-target-error only affect background I/O.
# If an error occurs during a guest write request, the device's rerror/werror
# actions will be used.
# Note: @on-source-error and @on-target-error only affect background
# I/O. If an error occurs during a guest write request, the device's
# rerror/werror actions will be used.
#
# Since: 2.3
##
@ -961,7 +961,7 @@
'*on-target-error': 'BlockdevOnError' } }
##
# @blockdev-snapshot-sync
# @blockdev-snapshot-sync:
#
# Generates a synchronous snapshot of a block device.
#
@ -970,26 +970,26 @@
# Returns: nothing on success
# If @device is not a valid block device, DeviceNotFound
#
# Since 0.14.0
# Since: 0.14.0
##
{ 'command': 'blockdev-snapshot-sync',
'data': 'BlockdevSnapshotSync' }
##
# @blockdev-snapshot
# @blockdev-snapshot:
#
# Generates a snapshot of a block device.
#
# For the arguments, see the documentation of BlockdevSnapshot.
#
# Since 2.5
# Since: 2.5
##
{ 'command': 'blockdev-snapshot',
'data': 'BlockdevSnapshot' }
##
# @change-backing-file
# @change-backing-file:
#
# Change the backing file in the image file metadata. This does not
# cause QEMU to reopen the image file to reparse the backing filename
@ -1016,7 +1016,7 @@
'backing-file': 'str' } }
##
# @block-commit
# @block-commit:
#
# Live commit of data from overlay image nodes into backing nodes - i.e.,
# writes data between 'top' and 'base' into 'base'.
@ -1079,7 +1079,7 @@
'*backing-file': 'str', '*speed': 'int' } }
##
# @drive-backup
# @drive-backup:
#
# Start a point-in-time copy of a block device to a new destination. The
# status of ongoing drive-backup operations can be checked with
@ -1092,13 +1092,13 @@
# Returns: nothing on success
# If @device is not a valid block device, GenericError
#
# Since 1.6
# Since: 1.6
##
{ 'command': 'drive-backup', 'boxed': true,
'data': 'DriveBackup' }
##
# @blockdev-backup
# @blockdev-backup:
#
# Start a point-in-time copy of a block device to a new destination. The
# status of ongoing blockdev-backup operations can be checked with
@ -1111,25 +1111,25 @@
# Returns: nothing on success
# If @device is not a valid block device, DeviceNotFound
#
# Since 2.3
# Since: 2.3
##
{ 'command': 'blockdev-backup', 'boxed': true,
'data': 'BlockdevBackup' }
##
# @query-named-block-nodes
# @query-named-block-nodes:
#
# Get the named block driver list
#
# Returns: the list of BlockDeviceInfo
#
# Since 2.0
# Since: 2.0
##
{ 'command': 'query-named-block-nodes', 'returns': [ 'BlockDeviceInfo' ] }
##
# @drive-mirror
# @drive-mirror:
#
# Start mirroring a block device's writes to a new destination.
#
@ -1138,13 +1138,13 @@
# Returns: nothing on success
# If @device is not a valid block device, GenericError
#
# Since 1.3
# Since: 1.3
##
{ 'command': 'drive-mirror', 'boxed': true,
'data': 'DriveMirror' }
##
# DriveMirror
# @DriveMirror:
#
# A set of parameters describing drive mirror setup.
#
@ -1198,7 +1198,7 @@
# written. Both will result in identical contents.
# Default is true. (Since 2.4)
#
# Since 1.3
# Since: 1.3
##
{ 'struct': 'DriveMirror',
'data': { '*job-id': 'str', 'device': 'str', 'target': 'str',
@ -1210,19 +1210,19 @@
'*unmap': 'bool' } }
##
# @BlockDirtyBitmap
# @BlockDirtyBitmap:
#
# @node: name of device/node which the bitmap is tracking
#
# @name: name of the dirty bitmap
#
# Since 2.4
# Since: 2.4
##
{ 'struct': 'BlockDirtyBitmap',
'data': { 'node': 'str', 'name': 'str' } }
##
# @BlockDirtyBitmapAdd
# @BlockDirtyBitmapAdd:
#
# @node: name of device/node which the bitmap is tracking
#
@ -1231,13 +1231,13 @@
# @granularity: #optional the bitmap granularity, default is 64k for
# block-dirty-bitmap-add
#
# Since 2.4
# Since: 2.4
##
{ 'struct': 'BlockDirtyBitmapAdd',
'data': { 'node': 'str', 'name': 'str', '*granularity': 'uint32' } }
##
# @block-dirty-bitmap-add
# @block-dirty-bitmap-add:
#
# Create a dirty bitmap with a name on the node
#
@ -1245,13 +1245,13 @@
# If @node is not a valid block device or node, DeviceNotFound
# If @name is already taken, GenericError with an explanation
#
# Since 2.4
# Since: 2.4
##
{ 'command': 'block-dirty-bitmap-add',
'data': 'BlockDirtyBitmapAdd' }
##
# @block-dirty-bitmap-remove
# @block-dirty-bitmap-remove:
#
# Remove a dirty bitmap on the node
#
@ -1260,13 +1260,13 @@
# If @name is not found, GenericError with an explanation
# if @name is frozen by an operation, GenericError
#
# Since 2.4
# Since: 2.4
##
{ 'command': 'block-dirty-bitmap-remove',
'data': 'BlockDirtyBitmap' }
##
# @block-dirty-bitmap-clear
# @block-dirty-bitmap-clear:
#
# Clear (reset) a dirty bitmap on the device
#
@ -1274,13 +1274,13 @@
# If @node is not a valid block device, DeviceNotFound
# If @name is not found, GenericError with an explanation
#
# Since 2.4
# Since: 2.4
##
{ 'command': 'block-dirty-bitmap-clear',
'data': 'BlockDirtyBitmap' }
##
# @blockdev-mirror
# @blockdev-mirror:
#
# Start mirroring a block device's writes to a new destination.
#
@ -1321,7 +1321,7 @@
#
# Returns: nothing on success.
#
# Since 2.6
# Since: 2.6
##
{ 'command': 'blockdev-mirror',
'data': { '*job-id': 'str', 'device': 'str', 'target': 'str',
@ -1368,7 +1368,7 @@
'data': 'BlockIOThrottle' }
##
# BlockIOThrottle
# @BlockIOThrottle:
#
# A set of parameters describing block throttling.
#
@ -1650,7 +1650,7 @@
{ 'command': 'block-job-complete', 'data': { 'device': 'str' } }
##
# @BlockdevDiscardOptions
# @BlockdevDiscardOptions:
#
# Determines how to handle discard requests.
#
@ -1663,7 +1663,7 @@
'data': [ 'ignore', 'unmap' ] }
##
# @BlockdevDetectZeroesOptions
# @BlockdevDetectZeroesOptions:
#
# Describes the operation mode for the automatic conversion of plain
# zero writes by the OS to driver specific optimized zero write commands.
@ -1679,7 +1679,7 @@
'data': [ 'off', 'on', 'unmap' ] }
##
# @BlockdevAioOptions
# @BlockdevAioOptions:
#
# Selects the AIO backend to handle I/O requests
#
@ -1692,7 +1692,7 @@
'data': [ 'threads', 'native' ] }
##
# @BlockdevCacheOptions
# @BlockdevCacheOptions:
#
# Includes cache-related options for block devices
#
@ -1708,13 +1708,17 @@
'*no-flush': 'bool' } }
##
# @BlockdevDriver
# @BlockdevDriver:
#
# Drivers that are supported in block device operations.
#
# @host_device, @host_cdrom: Since 2.1
# @host_device: Since 2.1
# @host_cdrom: Since 2.1
# @gluster: Since 2.7
# @nbd, @nfs, @replication, @ssh: Since 2.8
# @nbd: Since 2.8
# @nfs: Since 2.8
# @replication: Since 2.8
# @ssh: Since 2.8
#
# Since: 2.0
##
@ -1727,7 +1731,7 @@
'vvfat' ] }
##
# @BlockdevOptionsFile
# @BlockdevOptionsFile:
#
# Driver specific block device options for the file backend.
#
@ -1741,7 +1745,7 @@
'*aio': 'BlockdevAioOptions' } }
##
# @BlockdevOptionsNull
# @BlockdevOptionsNull:
#
# Driver specific block device options for the null backend.
#
@ -1756,7 +1760,7 @@
'data': { '*size': 'int', '*latency-ns': 'uint64' } }
##
# @BlockdevOptionsVVFAT
# @BlockdevOptionsVVFAT:
#
# Driver specific block device options for the vvfat protocol.
#
@ -1777,7 +1781,7 @@
'*label': 'str', '*rw': 'bool' } }
##
# @BlockdevOptionsGenericFormat
# @BlockdevOptionsGenericFormat:
#
# Driver specific block device options for image format that have no option
# besides their data source.
@ -1790,7 +1794,7 @@
'data': { 'file': 'BlockdevRef' } }
##
# @BlockdevOptionsLUKS
# @BlockdevOptionsLUKS:
#
# Driver specific block device options for LUKS.
#
@ -1806,7 +1810,7 @@
##
# @BlockdevOptionsGenericCOWFormat
# @BlockdevOptionsGenericCOWFormat:
#
# Driver specific block device options for image format that have no option
# besides their data source and an optional backing file.
@ -1823,7 +1827,7 @@
'data': { '*backing': 'BlockdevRef' } }
##
# @Qcow2OverlapCheckMode
# @Qcow2OverlapCheckMode:
#
# General overlap check modes.
#
@ -1843,7 +1847,7 @@
'data': [ 'none', 'constant', 'cached', 'all' ] }
##
# @Qcow2OverlapCheckFlags
# @Qcow2OverlapCheckFlags:
#
# Structure of flags for each metadata structure. Setting a field to 'true'
# makes qemu guard that structure against unintended overwriting. The default
@ -1866,7 +1870,7 @@
'*inactive-l2': 'bool' } }
##
# @Qcow2OverlapChecks
# @Qcow2OverlapChecks:
#
# Specifies which metadata structures should be guarded against unintended
# overwriting.
@ -1883,7 +1887,7 @@
'mode': 'Qcow2OverlapCheckMode' } }
##
# @BlockdevOptionsQcow2
# @BlockdevOptionsQcow2:
#
# Driver specific block device options for qcow2.
#
@ -1933,7 +1937,7 @@
##
# @BlockdevOptionsArchipelago
# @BlockdevOptionsArchipelago:
#
# Driver specific block device options for Archipelago.
#
@ -1962,7 +1966,7 @@
'*segment': 'str' } }
##
# @BlockdevOptionsSsh
# @BlockdevOptionsSsh:
#
# @server: host address
#
@ -1973,7 +1977,7 @@
#
# TODO: Expose the host_key_check option in QMP
#
# Since 2.8
# Since: 2.8
##
{ 'struct': 'BlockdevOptionsSsh',
'data': { 'server': 'InetSocketAddress',
@ -1982,7 +1986,7 @@
##
# @BlkdebugEvent
# @BlkdebugEvent:
#
# Trigger events supported by blkdebug.
#
@ -2005,7 +2009,7 @@
'pwritev_zero', 'pwritev_done', 'empty_image_prepare' ] }
##
# @BlkdebugInjectErrorOptions
# @BlkdebugInjectErrorOptions:
#
# Describes a single error injection for blkdebug.
#
@ -2037,7 +2041,7 @@
'*immediately': 'bool' } }
##
# @BlkdebugSetStateOptions
# @BlkdebugSetStateOptions:
#
# Describes a single state-change event for blkdebug.
#
@ -2057,7 +2061,7 @@
'new_state': 'int' } }
##
# @BlockdevOptionsBlkdebug
# @BlockdevOptionsBlkdebug:
#
# Driver specific block device options for blkdebug.
#
@ -2082,7 +2086,7 @@
'*set-state': ['BlkdebugSetStateOptions'] } }
##
# @BlockdevOptionsBlkverify
# @BlockdevOptionsBlkverify:
#
# Driver specific block device options for blkverify.
#
@ -2097,7 +2101,7 @@
'raw': 'BlockdevRef' } }
##
# @QuorumReadPattern
# @QuorumReadPattern:
#
# An enumeration of quorum read patterns.
#
@ -2110,7 +2114,7 @@
{ 'enum': 'QuorumReadPattern', 'data': [ 'quorum', 'fifo' ] }
##
# @BlockdevOptionsQuorum
# @BlockdevOptionsQuorum:
#
# Driver specific block device options for Quorum
#
@ -2137,7 +2141,7 @@
'*read-pattern': 'QuorumReadPattern' } }
##
# @GlusterTransport
# @GlusterTransport:
#
# An enumeration of Gluster transport types
#
@ -2152,7 +2156,7 @@
##
# @GlusterServer
# @GlusterServer:
#
# Captures the address of a socket
#
@ -2160,10 +2164,6 @@
#
# @type: Transport type used for gluster connection
#
# @unix: socket file
#
# @tcp: host address and port number
#
# This is similar to SocketAddress, only distinction:
#
# 1. GlusterServer is a flat union, SocketAddress is a simple union.
@ -2185,7 +2185,7 @@
'tcp': 'InetSocketAddress' } }
##
# @BlockdevOptionsGluster
# @BlockdevOptionsGluster:
#
# Driver specific block device options for Gluster
#
@ -2209,7 +2209,7 @@
'*logfile': 'str' } }
##
# @ReplicationMode
# @ReplicationMode:
#
# An enumeration of replication modes.
#
@ -2222,7 +2222,7 @@
{ 'enum' : 'ReplicationMode', 'data' : [ 'primary', 'secondary' ] }
##
# @BlockdevOptionsReplication
# @BlockdevOptionsReplication:
#
# Driver specific block device options for replication
#
@ -2240,19 +2240,19 @@
'*top-id': 'str' } }
##
# @NFSTransport
# @NFSTransport:
#
# An enumeration of NFS transport types
#
# @inet: TCP transport
#
# Since 2.8
# Since: 2.8
##
{ 'enum': 'NFSTransport',
'data': [ 'inet' ] }
##
# @NFSServer
# @NFSServer:
#
# Captures the address of the socket
#
@ -2260,14 +2260,14 @@
#
# @host: host address for NFS server
#
# Since 2.8
# Since: 2.8
##
{ 'struct': 'NFSServer',
'data': { 'type': 'NFSTransport',
'host': 'str' } }
##
# @BlockdevOptionsNfs
# @BlockdevOptionsNfs:
#
# Driver specific block device option for NFS
#
@ -2295,7 +2295,7 @@
# @debug-level: #optional set the NFS debug level (max 2) (defaults
# to libnfs default)
#
# Since 2.8
# Since: 2.8
##
{ 'struct': 'BlockdevOptionsNfs',
'data': { 'server': 'NFSServer',
@ -2308,7 +2308,7 @@
'*debug-level': 'int' } }
##
# @BlockdevOptionsCurl
# @BlockdevOptionsCurl:
#
# Driver specific block device options for the curl backend.
#
@ -2320,7 +2320,7 @@
'data': { 'filename': 'str' } }
##
# @BlockdevOptionsNbd
# @BlockdevOptionsNbd:
#
# Driver specific block device options for NBD.
#
@ -2338,7 +2338,7 @@
'*tls-creds': 'str' } }
##
# @BlockdevOptionsRaw
# @BlockdevOptionsRaw:
#
# Driver specific block device options for the raw driver.
#
@ -2352,7 +2352,7 @@
'data': { '*offset': 'int', '*size': 'int' } }
##
# @BlockdevOptions
# @BlockdevOptions:
#
# Options for creating a block device. Many options are available for all
# block devices, independent of the block driver:
@ -2418,7 +2418,7 @@
} }
##
# @BlockdevRef
# @BlockdevRef:
#
# Reference to a block device.
#
@ -2616,7 +2616,7 @@
##
# @BlockErrorAction
# @BlockErrorAction:
#
# An enumeration of action that has been taken when a DISK I/O occurs
#
@ -2633,7 +2633,7 @@
##
# @BLOCK_IMAGE_CORRUPTED
# @BLOCK_IMAGE_CORRUPTED:
#
# Emitted when a corruption has been detected in a disk image
#
@ -2668,7 +2668,7 @@
'fatal' : 'bool' } }
##
# @BLOCK_IO_ERROR
# @BLOCK_IO_ERROR:
#
# Emitted when a disk I/O error occurs
#
@ -2704,7 +2704,7 @@
'reason': 'str' } }
##
# @BLOCK_JOB_COMPLETED
# @BLOCK_JOB_COMPLETED:
#
# Emitted when a block job has completed
#
@ -2736,7 +2736,7 @@
'*error': 'str' } }
##
# @BLOCK_JOB_CANCELLED
# @BLOCK_JOB_CANCELLED:
#
# Emitted when a block job has been cancelled
#
@ -2762,7 +2762,7 @@
'speed' : 'int' } }
##
# @BLOCK_JOB_ERROR
# @BLOCK_JOB_ERROR:
#
# Emitted when a block job encounters an error
#
@ -2781,7 +2781,7 @@
'action' : 'BlockErrorAction' } }
##
# @BLOCK_JOB_READY
# @BLOCK_JOB_READY:
#
# Emitted when a block job is ready to complete
#
@ -2809,7 +2809,8 @@
'offset': 'int',
'speed' : 'int' } }
# @PreallocMode
##
# @PreallocMode:
#
# Preallocation mode of QEMU image file
#
@ -2821,13 +2822,13 @@
# space is really available. @full preallocation also sets up
# metadata correctly.
#
# Since 2.2
# Since: 2.2
##
{ 'enum': 'PreallocMode',
'data': [ 'off', 'metadata', 'falloc', 'full' ] }
##
# @BLOCK_WRITE_THRESHOLD
# @BLOCK_WRITE_THRESHOLD:
#
# Emitted when writes on block device reaches or exceeds the
# configured write threshold. For thin-provisioned devices, this
@ -2850,7 +2851,7 @@
'write-threshold': 'uint64' } }
##
# @block-set-write-threshold
# @block-set-write-threshold:
#
# Change the write threshold for a block drive. An event will be delivered
# if a write to this block drive crosses the configured threshold.
@ -2868,7 +2869,7 @@
'data': { 'node-name': 'str', 'write-threshold': 'uint64' } }
##
# @x-blockdev-change
# @x-blockdev-change:
#
# Dynamically reconfigure the block driver state graph. It can be used
# to add, remove, insert or replace a graph node. Currently only the

View File

@ -40,7 +40,7 @@
'data': ['auto', 'none', 'lba', 'large', 'rechs']}
##
# @FloppyDriveType
# @FloppyDriveType:
#
# Type of Floppy drive to be emulated by the Floppy Disk Controller.
#
@ -56,7 +56,7 @@
'data': ['144', '288', '120', 'none', 'auto']}
##
# @BlockdevSnapshotInternal
# @BlockdevSnapshotInternal:
#
# @device: the device name or node-name of a root node to generate the snapshot
# from
@ -73,7 +73,7 @@
'data': { 'device': 'str', 'name': 'str' } }
##
# @blockdev-snapshot-internal-sync
# @blockdev-snapshot-internal-sync:
#
# Synchronously take an internal snapshot of a block device, when the format
# of the image used supports it.
@ -87,13 +87,13 @@
# If the format of the image used does not support it,
# BlockFormatFeatureNotSupported
#
# Since 1.7
# Since: 1.7
##
{ 'command': 'blockdev-snapshot-internal-sync',
'data': 'BlockdevSnapshotInternal' }
##
# @blockdev-snapshot-delete-internal-sync
# @blockdev-snapshot-delete-internal-sync:
#
# Synchronously delete an internal snapshot of a block device, when the format
# of the image used support it. The snapshot is identified by name or id or
@ -114,7 +114,7 @@
# BlockFormatFeatureNotSupported
# If @id and @name are both not specified, GenericError
#
# Since 1.7
# Since: 1.7
##
{ 'command': 'blockdev-snapshot-delete-internal-sync',
'data': { 'device': 'str', '*id': 'str', '*name': 'str'},
@ -190,7 +190,7 @@
{ 'command': 'nbd-server-stop' }
##
# @DEVICE_TRAY_MOVED
# @DEVICE_TRAY_MOVED:
#
# Emitted whenever the tray of a removable device is moved by the guest or by
# HMP/QMP commands
@ -209,7 +209,7 @@
'data': { 'device': 'str', 'id': 'str', 'tray-open': 'bool' } }
##
# @QuorumOpType
# @QuorumOpType:
#
# An enumeration of the quorum operation types
#

View File

@ -3,7 +3,7 @@
# QAPI common definitions
##
# @QapiErrorClass
# @QapiErrorClass:
#
# QEMU error classes
#
@ -30,15 +30,15 @@
'DeviceNotActive', 'DeviceNotFound', 'KVMMissingCap' ] }
##
# @VersionTriple
# @VersionTriple:
#
# A three-part version number.
#
# @qemu.major: The major version number.
# @major: The major version number.
#
# @qemu.minor: The minor version number.
# @minor: The minor version number.
#
# @qemu.micro: The micro version number.
# @micro: The micro version number.
#
# Since: 2.4
##
@ -101,7 +101,7 @@
{ 'command': 'query-commands', 'returns': ['CommandInfo'] }
##
# @OnOffAuto
# @OnOffAuto:
#
# An enumeration of three options: on, off, and auto
#
@ -117,7 +117,7 @@
'data': [ 'auto', 'on', 'off' ] }
##
# @OnOffSplit
# @OnOffSplit:
#
# An enumeration of three values: on, off, and split
#

View File

@ -3,7 +3,7 @@
# QAPI crypto definitions
##
# QCryptoTLSCredsEndpoint:
# @QCryptoTLSCredsEndpoint:
#
# The type of network endpoint that will be using the credentials.
# Most types of credential require different setup / structures
@ -22,7 +22,7 @@
##
# QCryptoSecretFormat:
# @QCryptoSecretFormat:
#
# The data format that the secret is provided in
#
@ -36,7 +36,7 @@
##
# QCryptoHashAlgorithm:
# @QCryptoHashAlgorithm:
#
# The supported algorithms for computing content digests
#
@ -55,7 +55,7 @@
##
# QCryptoCipherAlgorithm:
# @QCryptoCipherAlgorithm:
#
# The supported algorithms for content encryption ciphers
#
@ -82,7 +82,7 @@
##
# QCryptoCipherMode:
# @QCryptoCipherMode:
#
# The supported modes for content encryption ciphers
#
@ -98,7 +98,7 @@
##
# QCryptoIVGenAlgorithm:
# @QCryptoIVGenAlgorithm:
#
# The supported algorithms for generating initialization
# vectors for full disk encryption. The 'plain' generator
@ -116,7 +116,7 @@
'data': ['plain', 'plain64', 'essiv']}
##
# QCryptoBlockFormat:
# @QCryptoBlockFormat:
#
# The supported full disk encryption formats
#
@ -131,7 +131,7 @@
'data': ['qcow', 'luks']}
##
# QCryptoBlockOptionsBase:
# @QCryptoBlockOptionsBase:
#
# The common options that apply to all full disk
# encryption formats
@ -144,7 +144,7 @@
'data': { 'format': 'QCryptoBlockFormat' }}
##
# QCryptoBlockOptionsQCow:
# @QCryptoBlockOptionsQCow:
#
# The options that apply to QCow/QCow2 AES-CBC encryption format
#
@ -158,7 +158,7 @@
'data': { '*key-secret': 'str' }}
##
# QCryptoBlockOptionsLUKS:
# @QCryptoBlockOptionsLUKS:
#
# The options that apply to LUKS encryption format
#
@ -172,7 +172,7 @@
##
# QCryptoBlockCreateOptionsLUKS:
# @QCryptoBlockCreateOptionsLUKS:
#
# The options that apply to LUKS encryption format initialization
#
@ -202,7 +202,7 @@
##
# QCryptoBlockOpenOptions:
# @QCryptoBlockOpenOptions:
#
# The options that are available for all encryption formats
# when opening an existing volume
@ -217,7 +217,7 @@
##
# QCryptoBlockCreateOptions:
# @QCryptoBlockCreateOptions:
#
# The options that are available for all encryption formats
# when initializing a new volume
@ -232,7 +232,7 @@
##
# QCryptoBlockInfoBase:
# @QCryptoBlockInfoBase:
#
# The common information that applies to all full disk
# encryption formats
@ -246,7 +246,7 @@
##
# QCryptoBlockInfoLUKSSlot:
# @QCryptoBlockInfoLUKSSlot:
#
# Information about the LUKS block encryption key
# slot options
@ -266,7 +266,7 @@
##
# QCryptoBlockInfoLUKS:
# @QCryptoBlockInfoLUKS:
#
# Information about the LUKS block encryption options
#
@ -294,7 +294,7 @@
'slots': [ 'QCryptoBlockInfoLUKSSlot' ] }}
##
# QCryptoBlockInfoQCow:
# @QCryptoBlockInfoQCow:
#
# Information about the QCow block encryption options
#
@ -305,7 +305,7 @@
##
# QCryptoBlockInfo:
# @QCryptoBlockInfo:
#
# Information about the block encryption options
#

View File

@ -1,5 +1,5 @@
##
# @SHUTDOWN
# @SHUTDOWN:
#
# Emitted when the virtual machine has shut down, indicating that qemu is
# about to exit.
@ -12,7 +12,7 @@
{ 'event': 'SHUTDOWN' }
##
# @POWERDOWN
# @POWERDOWN:
#
# Emitted when the virtual machine is powered down through the power control
# system, such as via ACPI.
@ -22,7 +22,7 @@
{ 'event': 'POWERDOWN' }
##
# @RESET
# @RESET:
#
# Emitted when the virtual machine is reset
#
@ -31,7 +31,7 @@
{ 'event': 'RESET' }
##
# @STOP
# @STOP:
#
# Emitted when the virtual machine is stopped
#
@ -40,7 +40,7 @@
{ 'event': 'STOP' }
##
# @RESUME
# @RESUME:
#
# Emitted when the virtual machine resumes execution
#
@ -49,7 +49,7 @@
{ 'event': 'RESUME' }
##
# @SUSPEND
# @SUSPEND:
#
# Emitted when guest enters a hardware suspension state, for example, S3 state,
# which is sometimes called standby state
@ -59,7 +59,7 @@
{ 'event': 'SUSPEND' }
##
# @SUSPEND_DISK
# @SUSPEND_DISK:
#
# Emitted when guest enters a hardware suspension state with data saved on
# disk, for example, S4 state, which is sometimes called hibernate state
@ -71,7 +71,7 @@
{ 'event': 'SUSPEND_DISK' }
##
# @WAKEUP
# @WAKEUP:
#
# Emitted when the guest has woken up from suspend state and is running
#
@ -80,7 +80,7 @@
{ 'event': 'WAKEUP' }
##
# @RTC_CHANGE
# @RTC_CHANGE:
#
# Emitted when the guest changes the RTC time.
#
@ -93,7 +93,7 @@
'data': { 'offset': 'int' } }
##
# @WATCHDOG
# @WATCHDOG:
#
# Emitted when the watchdog device's timer is expired
#
@ -108,7 +108,7 @@
'data': { 'action': 'WatchdogExpirationAction' } }
##
# @DEVICE_DELETED
# @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
@ -124,7 +124,7 @@
'data': { '*device': 'str', 'path': 'str' } }
##
# @NIC_RX_FILTER_CHANGED
# @NIC_RX_FILTER_CHANGED:
#
# Emitted once until the 'query-rx-filter' command is executed, the first event
# will always be emitted
@ -139,7 +139,7 @@
'data': { '*name': 'str', 'path': 'str' } }
##
# @VNC_CONNECTED
# @VNC_CONNECTED:
#
# Emitted when a VNC client establishes a connection
#
@ -157,7 +157,7 @@
'client': 'VncBasicInfo' } }
##
# @VNC_INITIALIZED
# @VNC_INITIALIZED:
#
# Emitted after authentication takes place (if any) and the VNC session is
# made active
@ -173,7 +173,7 @@
'client': 'VncClientInfo' } }
##
# @VNC_DISCONNECTED
# @VNC_DISCONNECTED:
#
# Emitted when the connection is closed
#
@ -188,7 +188,7 @@
'client': 'VncClientInfo' } }
##
# @SPICE_CONNECTED
# @SPICE_CONNECTED:
#
# Emitted when a SPICE client establishes a connection
#
@ -203,7 +203,7 @@
'client': 'SpiceBasicInfo' } }
##
# @SPICE_INITIALIZED
# @SPICE_INITIALIZED:
#
# Emitted after initial handshake and authentication takes place (if any)
# and the SPICE channel is up and running
@ -219,7 +219,7 @@
'client': 'SpiceChannel' } }
##
# @SPICE_DISCONNECTED
# @SPICE_DISCONNECTED:
#
# Emitted when the SPICE connection is closed
#
@ -234,7 +234,7 @@
'client': 'SpiceBasicInfo' } }
##
# @SPICE_MIGRATE_COMPLETED
# @SPICE_MIGRATE_COMPLETED:
#
# Emitted when SPICE migration has completed
#
@ -243,7 +243,7 @@
{ 'event': 'SPICE_MIGRATE_COMPLETED' }
##
# @MIGRATION
# @MIGRATION:
#
# Emitted when a migration event happens
#
@ -255,7 +255,7 @@
'data': {'status': 'MigrationStatus'}}
##
# @MIGRATION_PASS
# @MIGRATION_PASS:
#
# Emitted from the source side of a migration at the start of each pass
# (when it syncs the dirty bitmap)
@ -268,7 +268,7 @@
'data': { 'pass': 'int' } }
##
# @ACPI_DEVICE_OST
# @ACPI_DEVICE_OST:
#
# Emitted when guest executes ACPI _OST method.
#
@ -280,7 +280,7 @@
'data': { 'info': 'ACPIOSTInfo' } }
##
# @BALLOON_CHANGE
# @BALLOON_CHANGE:
#
# Emitted when the guest changes the actual BALLOON level. This value is
# equivalent to the @actual field return by the 'query-balloon' command
@ -293,7 +293,7 @@
'data': { 'actual': 'int' } }
##
# @GUEST_PANICKED
# @GUEST_PANICKED:
#
# Emitted when guest OS panic is detected
#
@ -305,7 +305,7 @@
'data': { 'action': 'GuestPanicAction' } }
##
# @QUORUM_FAILURE
# @QUORUM_FAILURE:
#
# Emitted by the Quorum block driver if it fails to establish a quorum
#
@ -321,7 +321,7 @@
'data': { 'reference': 'str', 'sector-num': 'int', 'sectors-count': 'int' } }
##
# @QUORUM_REPORT_BAD
# @QUORUM_REPORT_BAD:
#
# Emitted to report a corruption of a Quorum file
#
@ -345,7 +345,7 @@
'sector-num': 'int', 'sectors-count': 'int' } }
##
# @VSERPORT_CHANGE
# @VSERPORT_CHANGE:
#
# Emitted when the guest opens or closes a virtio-serial port.
#
@ -359,7 +359,7 @@
'data': { 'id': 'str', 'open': 'bool' } }
##
# @MEM_UNPLUG_ERROR
# @MEM_UNPLUG_ERROR:
#
# Emitted when memory hot unplug error occurs.
#
@ -373,7 +373,7 @@
'data': { 'device': 'str', 'msg': 'str' } }
##
# @DUMP_COMPLETED
# @DUMP_COMPLETED:
#
# Emitted when background dump has completed
#

View File

@ -11,7 +11,7 @@
# See the COPYING file in the top-level directory.
##
# @query-qmp-schema
# @query-qmp-schema:
#
# Command query-qmp-schema exposes the QMP wire ABI as an array of
# SchemaInfo. This lets QMP clients figure out what commands and
@ -49,7 +49,7 @@
'gen': false } # just to simplify qmp_query_json()
##
# @SchemaMetaType
# @SchemaMetaType:
#
# This is a @SchemaInfo's meta type, i.e. the kind of entity it
# describes.
@ -75,7 +75,7 @@
'command', 'event' ] }
##
# @SchemaInfo
# @SchemaInfo:
#
# @name: the entity's name, inherited from @base.
# Commands and events have the name defined in the QAPI schema.
@ -105,7 +105,7 @@
'event': 'SchemaInfoEvent' } }
##
# @SchemaInfoBuiltin
# @SchemaInfoBuiltin:
#
# Additional SchemaInfo members for meta-type 'builtin'.
#
@ -117,7 +117,7 @@
'data': { 'json-type': 'JSONType' } }
##
# @JSONType
# @JSONType:
#
# The four primitive and two structured types according to RFC 7159
# section 1, plus 'int' (split off 'number'), plus the obvious top
@ -130,7 +130,7 @@
'object', 'array', 'value' ] }
##
# @SchemaInfoEnum
# @SchemaInfoEnum:
#
# Additional SchemaInfo members for meta-type 'enum'.
#
@ -144,7 +144,7 @@
'data': { 'values': ['str'] } }
##
# @SchemaInfoArray
# @SchemaInfoArray:
#
# Additional SchemaInfo members for meta-type 'array'.
#
@ -158,7 +158,7 @@
'data': { 'element-type': 'str' } }
##
# @SchemaInfoObject
# @SchemaInfoObject:
#
# Additional SchemaInfo members for meta-type 'object'.
#
@ -183,7 +183,7 @@
'*variants': [ 'SchemaInfoObjectVariant' ] } }
##
# @SchemaInfoObjectMember
# @SchemaInfoObjectMember:
#
# An object member.
#
@ -206,7 +206,7 @@
# @default's type must be null or match @type
##
# @SchemaInfoObjectVariant
# @SchemaInfoObjectVariant:
#
# The variant members for a value of the type tag.
#
@ -221,7 +221,7 @@
'data': { 'case': 'str', 'type': 'str' } }
##
# @SchemaInfoAlternate
# @SchemaInfoAlternate:
#
# Additional SchemaInfo members for meta-type 'alternate'.
#
@ -237,7 +237,7 @@
'data': { 'members': [ 'SchemaInfoAlternateMember' ] } }
##
# @SchemaInfoAlternateMember
# @SchemaInfoAlternateMember:
#
# An alternate member.
#
@ -249,7 +249,7 @@
'data': { 'type': 'str' } }
##
# @SchemaInfoCommand
# @SchemaInfoCommand:
#
# Additional SchemaInfo members for meta-type 'command'.
#
@ -266,7 +266,7 @@
'data': { 'arg-type': 'str', 'ret-type': 'str' } }
##
# @SchemaInfoEvent
# @SchemaInfoEvent:
#
# Additional SchemaInfo members for meta-type 'event'.
#

View File

@ -35,21 +35,12 @@ static void timestamp_put(QDict *qdict)
int err;
QObject *obj;
qemu_timeval tv;
int64_t sec, usec;
err = qemu_gettimeofday(&tv);
if (err < 0) {
/* Put -1 to indicate failure of getting host time */
sec = -1;
usec = -1;
} else {
sec = tv.tv_sec;
usec = tv.tv_usec;
}
obj = qobject_from_jsonf("{ 'seconds': %" PRId64 ", "
"'microseconds': %" PRId64 " }",
sec, usec);
/* Put -1 to indicate failure of getting host time */
obj = qobject_from_jsonf("{ 'seconds': %lld, 'microseconds': %lld }",
err < 0 ? -1LL : (long long)tv.tv_sec,
err < 0 ? -1LL : (long long)tv.tv_usec);
qdict_put_obj(qdict, "timestamp", obj);
}

View File

@ -1,5 +1,5 @@
##
# @Rocker:
# @RockerSwitch:
#
# Rocker switch information.
#

View File

@ -17,7 +17,7 @@
#
# @enabled: The event is dynamically enabled.
#
# Since 2.2
# Since: 2.2
##
{ 'enum': 'TraceEventState',
'data': ['unavailable', 'disabled', 'enabled'] }
@ -34,7 +34,7 @@
# An event is per-vCPU if it has the "vcpu" property in the "trace-events"
# files.
#
# Since 2.2
# Since: 2.2
##
{ 'struct': 'TraceEventInfo',
'data': {'name': 'str', 'state': 'TraceEventState', 'vcpu': 'bool'} }
@ -58,7 +58,7 @@
# exact match, @vcpu is given and the event does not have the "vcpu" property,
# an error is returned.
#
# Since 2.2
# Since: 2.2
##
{ 'command': 'trace-event-get-state',
'data': {'name': 'str', '*vcpu': 'int'},
@ -83,7 +83,7 @@
# match, @vcpu is given and the event does not have the "vcpu" property, an
# error is returned.
#
# Since 2.2
# Since: 2.2
##
{ 'command': 'trace-event-set-state',
'data': {'name': 'str', 'enable': 'bool', '*ignore-unavailable': 'bool',

View File

@ -102,7 +102,7 @@
#
# Returns: Time in nanoseconds.
#
# Since 1.5
# Since: 1.5
##
{ 'command': 'guest-get-time',
'returns': 'int' }
@ -149,13 +149,13 @@
# @success-response: whether command returns a response on success
# (since 1.7)
#
# Since 1.1.0
# Since: 1.1.0
##
{ 'struct': 'GuestAgentCommandInfo',
'data': { 'name': 'str', 'enabled': 'bool', 'success-response': 'bool' } }
##
# @GuestAgentInfo
# @GuestAgentInfo:
#
# Information about guest agent.
#
@ -163,7 +163,7 @@
#
# @supported_commands: Information about guest agent commands
#
# Since 0.15.0
# Since: 0.15.0
##
{ 'struct': 'GuestAgentInfo',
'data': { 'version': 'str',
@ -203,7 +203,7 @@
#
# Open a file in the guest and retrieve a file handle for it
#
# @filepath: Full path to the file in the guest to open.
# @path: Full path to the file in the guest to open.
#
# @mode: #optional open mode, as per fopen(), "r" is the default.
#
@ -230,7 +230,7 @@
'data': { 'handle': 'int' } }
##
# @GuestFileRead
# @GuestFileRead:
#
# Result of guest agent file-read operation
#
@ -264,7 +264,7 @@
'returns': 'GuestFileRead' }
##
# @GuestFileWrite
# @GuestFileWrite:
#
# Result of guest agent file-write operation
#
@ -300,7 +300,7 @@
##
# @GuestFileSeek
# @GuestFileSeek:
#
# Result of guest agent file-seek operation
#
@ -378,7 +378,7 @@
'data': { 'handle': 'int' } }
##
# @GuestFsFreezeStatus
# @GuestFsfreezeStatus:
#
# An enumeration of filesystem freeze states
#
@ -455,7 +455,7 @@
'returns': 'int' }
##
# @GuestFilesystemTrimResult
# @GuestFilesystemTrimResult:
#
# @path: path that was trimmed
# @error: an error message when trim failed
@ -469,7 +469,7 @@
'*trimmed': 'int', '*minimum': 'int', '*error': 'str'} }
##
# @GuestFilesystemTrimResponse
# @GuestFilesystemTrimResponse:
#
# @paths: list of @GuestFilesystemTrimResult per path that was trimmed
#
@ -501,7 +501,7 @@
'returns': 'GuestFilesystemTrimResponse' }
##
# @guest-suspend-disk
# @guest-suspend-disk:
#
# Suspend guest to disk.
#
@ -529,7 +529,7 @@
{ 'command': 'guest-suspend-disk', 'success-response': false }
##
# @guest-suspend-ram
# @guest-suspend-ram:
#
# Suspend guest to ram.
#
@ -561,7 +561,7 @@
{ 'command': 'guest-suspend-ram', 'success-response': false }
##
# @guest-suspend-hybrid
# @guest-suspend-hybrid:
#
# Save guest state to disk and suspend to ram.
#
@ -720,7 +720,7 @@
'returns': 'int' }
##
# @GuestDiskBusType
# @GuestDiskBusType:
#
# An enumeration of bus type of disks
#
@ -770,7 +770,7 @@
# @GuestDiskAddress:
#
# @pci-controller: controller's PCI address
# @type: bus type
# @bus-type: bus type
# @bus: bus id
# @target: target id
# @unit: unit id
@ -783,7 +783,7 @@
'bus': 'int', 'target': 'int', 'unit': 'int'} }
##
# @GuestFilesystemInfo
# @GuestFilesystemInfo:
#
# @name: disk name
# @mountpoint: mount point path
@ -811,7 +811,7 @@
'returns': ['GuestFilesystemInfo'] }
##
# @guest-set-user-password
# @guest-set-user-password:
#
# @username: the user account whose password to change
# @password: the new password entry string, base64 encoded
@ -832,11 +832,12 @@
#
# Returns: Nothing on success.
#
# Since 2.3
# Since: 2.3
##
{ 'command': 'guest-set-user-password',
'data': { 'username': 'str', 'password': 'str', 'crypted': 'bool' } }
##
# @GuestMemoryBlock:
#
# @phys-index: Arbitrary guest-specific unique identifier of the MEMORY BLOCK.
@ -872,7 +873,7 @@
'returns': ['GuestMemoryBlock'] }
##
# @GuestMemoryBlockResponseType
# @GuestMemoryBlockResponseType:
#
# An enumeration of memory block operation result.
#
@ -936,6 +937,7 @@
'data': {'mem-blks': ['GuestMemoryBlock'] },
'returns': ['GuestMemoryBlockResponse'] }
##
# @GuestMemoryBlockInfo:
#
# @size: the size (in bytes) of the guest memory blocks,
@ -952,14 +954,14 @@
#
# Get information relating to guest memory blocks.
#
# Returns: memory block size in bytes.
# Returns: @GuestMemoryBlockInfo
#
# Since 2.3
# Since: 2.3
##
{ 'command': 'guest-get-memory-block-info',
'returns': 'GuestMemoryBlockInfo' }
##
# @GuestExecStatus:
#
# @exited: true if process has already terminated.
@ -982,7 +984,7 @@
'*out-data': 'str', '*err-data': 'str',
'*out-truncated': 'bool', '*err-truncated': 'bool' }}
##
# @guest-exec-status
# @guest-exec-status:
#
# Check status of process associated with PID retrieved via guest-exec.
# Reap the process and associated metadata if it has exited.
@ -991,7 +993,7 @@
#
# Returns: GuestExecStatus on success.
#
# Since 2.5
# Since: 2.5
##
{ 'command': 'guest-exec-status',
'data': { 'pid': 'int' },
@ -1001,7 +1003,7 @@
# @GuestExec:
# @pid: pid of child process in guest OS
#
#Since: 2.5
# Since: 2.5
##
{ 'struct': 'GuestExec',
'data': { 'pid': 'int'} }

View File

@ -964,7 +964,7 @@ static void vararg_number(void)
QInt *qint;
QFloat *qfloat;
int value = 0x2342;
int64_t value64 = 0x2342342343LL;
long long value_ll = 0x2342342343LL;
double valuef = 2.323423423;
obj = qobject_from_jsonf("%d", value);
@ -976,12 +976,12 @@ static void vararg_number(void)
QDECREF(qint);
obj = qobject_from_jsonf("%" PRId64, value64);
obj = qobject_from_jsonf("%lld", value_ll);
g_assert(obj != NULL);
g_assert(qobject_type(obj) == QTYPE_QINT);
qint = qobject_to_qint(obj);
g_assert(qint_get_int(qint) == value64);
g_assert(qint_get_int(qint) == value_ll);
QDECREF(qint);

View File

@ -837,6 +837,7 @@ static void test_qga_guest_exec(gconstpointer fix)
int64_t pid, now, exitcode;
gsize len;
bool exited;
char *cmd;
/* exec 'echo foo bar' */
ret = qmp_fd(fixture->fd, "{'execute': 'guest-exec', 'arguments': {"
@ -851,9 +852,10 @@ static void test_qga_guest_exec(gconstpointer fix)
/* wait for completion */
now = g_get_monotonic_time();
cmd = g_strdup_printf("{'execute': 'guest-exec-status',"
" 'arguments': { 'pid': %" PRId64 " } }", pid);
do {
ret = qmp_fd(fixture->fd, "{'execute': 'guest-exec-status',"
" 'arguments': { 'pid': %" PRId64 " } }", pid);
ret = qmp_fd(fixture->fd, cmd);
g_assert_nonnull(ret);
val = qdict_get_qdict(ret, "return");
exited = qdict_get_bool(val, "exited");
@ -863,6 +865,7 @@ static void test_qga_guest_exec(gconstpointer fix)
} while (!exited &&
g_get_monotonic_time() < now + 5 * G_TIME_SPAN_SECOND);
g_assert(exited);
g_free(cmd);
/* check stdout */
exitcode = qdict_get_int(val, "exitcode");

View File

@ -83,10 +83,11 @@ static Visitor *visitor_input_test_init_raw(TestInputVisitorData *data,
static void test_visitor_in_int(TestInputVisitorData *data,
const void *unused)
{
int64_t res = 0, value = -42;
int64_t res = 0;
int value = -42;
Visitor *v;
v = visitor_input_test_init(data, "%" PRId64, value);
v = visitor_input_test_init(data, "%d", value);
visit_type_int(v, NULL, &res, &error_abort);
g_assert_cmpint(res, ==, value);