qemu/qapi/misc.json
<<
>>
Prefs
   1# -*- Mode: Python -*-
   2# vim: filetype=python
   3#
   4
   5##
   6# = Miscellanea
   7##
   8
   9{ 'include': 'common.json' }
  10
  11##
  12# @add_client:
  13#
  14# Allow client connections for VNC, Spice and socket based
  15# character devices to be passed in to QEMU via SCM_RIGHTS.
  16#
  17# @protocol: protocol name. Valid names are "vnc", "spice" or the
  18#            name of a character device (eg. from -chardev id=XXXX)
  19#
  20# @fdname: file descriptor name previously passed via 'getfd' command
  21#
  22# @skipauth: whether to skip authentication. Only applies
  23#            to "vnc" and "spice" protocols
  24#
  25# @tls: whether to perform TLS. Only applies to the "spice"
  26#       protocol
  27#
  28# Returns: nothing on success.
  29#
  30# Since: 0.14
  31#
  32# Example:
  33#
  34# -> { "execute": "add_client", "arguments": { "protocol": "vnc",
  35#                                              "fdname": "myclient" } }
  36# <- { "return": {} }
  37#
  38##
  39{ 'command': 'add_client',
  40  'data': { 'protocol': 'str', 'fdname': 'str', '*skipauth': 'bool',
  41            '*tls': 'bool' } }
  42
  43##
  44# @NameInfo:
  45#
  46# Guest name information.
  47#
  48# @name: The name of the guest
  49#
  50# Since: 0.14
  51##
  52{ 'struct': 'NameInfo', 'data': {'*name': 'str'} }
  53
  54##
  55# @query-name:
  56#
  57# Return the name information of a guest.
  58#
  59# Returns: @NameInfo of the guest
  60#
  61# Since: 0.14
  62#
  63# Example:
  64#
  65# -> { "execute": "query-name" }
  66# <- { "return": { "name": "qemu-name" } }
  67#
  68##
  69{ 'command': 'query-name', 'returns': 'NameInfo', 'allow-preconfig': true }
  70
  71##
  72# @IOThreadInfo:
  73#
  74# Information about an iothread
  75#
  76# @id: the identifier of the iothread
  77#
  78# @thread-id: ID of the underlying host thread
  79#
  80# @poll-max-ns: maximum polling time in ns, 0 means polling is disabled
  81#               (since 2.9)
  82#
  83# @poll-grow: how many ns will be added to polling time, 0 means that it's not
  84#             configured (since 2.9)
  85#
  86# @poll-shrink: how many ns will be removed from polling time, 0 means that
  87#               it's not configured (since 2.9)
  88#
  89# Since: 2.0
  90##
  91{ 'struct': 'IOThreadInfo',
  92  'data': {'id': 'str',
  93           'thread-id': 'int',
  94           'poll-max-ns': 'int',
  95           'poll-grow': 'int',
  96           'poll-shrink': 'int' } }
  97
  98##
  99# @query-iothreads:
 100#
 101# Returns a list of information about each iothread.
 102#
 103# Note: this list excludes the QEMU main loop thread, which is not declared
 104#       using the -object iothread command-line option.  It is always the main thread
 105#       of the process.
 106#
 107# Returns: a list of @IOThreadInfo for each iothread
 108#
 109# Since: 2.0
 110#
 111# Example:
 112#
 113# -> { "execute": "query-iothreads" }
 114# <- { "return": [
 115#          {
 116#             "id":"iothread0",
 117#             "thread-id":3134
 118#          },
 119#          {
 120#             "id":"iothread1",
 121#             "thread-id":3135
 122#          }
 123#       ]
 124#    }
 125#
 126##
 127{ 'command': 'query-iothreads', 'returns': ['IOThreadInfo'],
 128  'allow-preconfig': true }
 129
 130##
 131# @stop:
 132#
 133# Stop all guest VCPU execution.
 134#
 135# Since:  0.14
 136#
 137# Notes: This function will succeed even if the guest is already in the stopped
 138#        state.  In "inmigrate" state, it will ensure that the guest
 139#        remains paused once migration finishes, as if the -S option was
 140#        passed on the command line.
 141#
 142# Example:
 143#
 144# -> { "execute": "stop" }
 145# <- { "return": {} }
 146#
 147##
 148{ 'command': 'stop' }
 149
 150##
 151# @cont:
 152#
 153# Resume guest VCPU execution.
 154#
 155# Since:  0.14
 156#
 157# Returns:  If successful, nothing
 158#
 159# Notes: This command will succeed if the guest is currently running.  It
 160#        will also succeed if the guest is in the "inmigrate" state; in
 161#        this case, the effect of the command is to make sure the guest
 162#        starts once migration finishes, removing the effect of the -S
 163#        command line option if it was passed.
 164#
 165# Example:
 166#
 167# -> { "execute": "cont" }
 168# <- { "return": {} }
 169#
 170##
 171{ 'command': 'cont' }
 172
 173##
 174# @x-exit-preconfig:
 175#
 176# Exit from "preconfig" state
 177#
 178# This command makes QEMU exit the preconfig state and proceed with
 179# VM initialization using configuration data provided on the command line
 180# and via the QMP monitor during the preconfig state. The command is only
 181# available during the preconfig state (i.e. when the --preconfig command
 182# line option was in use).
 183#
 184# Since 3.0
 185#
 186# Returns: nothing
 187#
 188# Example:
 189#
 190# -> { "execute": "x-exit-preconfig" }
 191# <- { "return": {} }
 192#
 193##
 194{ 'command': 'x-exit-preconfig', 'allow-preconfig': true }
 195
 196##
 197# @human-monitor-command:
 198#
 199# Execute a command on the human monitor and return the output.
 200#
 201# @command-line: the command to execute in the human monitor
 202#
 203# @cpu-index: The CPU to use for commands that require an implicit CPU
 204#
 205# Features:
 206# @savevm-monitor-nodes: If present, HMP command savevm only snapshots
 207#                        monitor-owned nodes if they have no parents.
 208#                        This allows the use of 'savevm' with
 209#                        -blockdev. (since 4.2)
 210#
 211# Returns: the output of the command as a string
 212#
 213# Since: 0.14
 214#
 215# Notes: This command only exists as a stop-gap.  Its use is highly
 216#        discouraged.  The semantics of this command are not
 217#        guaranteed: this means that command names, arguments and
 218#        responses can change or be removed at ANY time.  Applications
 219#        that rely on long term stability guarantees should NOT
 220#        use this command.
 221#
 222#        Known limitations:
 223#
 224#        * This command is stateless, this means that commands that depend
 225#          on state information (such as getfd) might not work
 226#
 227#        * Commands that prompt the user for data don't currently work
 228#
 229# Example:
 230#
 231# -> { "execute": "human-monitor-command",
 232#      "arguments": { "command-line": "info kvm" } }
 233# <- { "return": "kvm support: enabled\r\n" }
 234#
 235##
 236{ 'command': 'human-monitor-command',
 237  'data': {'command-line': 'str', '*cpu-index': 'int'},
 238  'returns': 'str',
 239  'features': [ 'savevm-monitor-nodes' ] }
 240
 241##
 242# @getfd:
 243#
 244# Receive a file descriptor via SCM rights and assign it a name
 245#
 246# @fdname: file descriptor name
 247#
 248# Returns: Nothing on success
 249#
 250# Since: 0.14
 251#
 252# Notes: If @fdname already exists, the file descriptor assigned to
 253#        it will be closed and replaced by the received file
 254#        descriptor.
 255#
 256#        The 'closefd' command can be used to explicitly close the
 257#        file descriptor when it is no longer needed.
 258#
 259# Example:
 260#
 261# -> { "execute": "getfd", "arguments": { "fdname": "fd1" } }
 262# <- { "return": {} }
 263#
 264##
 265{ 'command': 'getfd', 'data': {'fdname': 'str'} }
 266
 267##
 268# @closefd:
 269#
 270# Close a file descriptor previously passed via SCM rights
 271#
 272# @fdname: file descriptor name
 273#
 274# Returns: Nothing on success
 275#
 276# Since: 0.14
 277#
 278# Example:
 279#
 280# -> { "execute": "closefd", "arguments": { "fdname": "fd1" } }
 281# <- { "return": {} }
 282#
 283##
 284{ 'command': 'closefd', 'data': {'fdname': 'str'} }
 285
 286##
 287# @AddfdInfo:
 288#
 289# Information about a file descriptor that was added to an fd set.
 290#
 291# @fdset-id: The ID of the fd set that @fd was added to.
 292#
 293# @fd: The file descriptor that was received via SCM rights and
 294#      added to the fd set.
 295#
 296# Since: 1.2
 297##
 298{ 'struct': 'AddfdInfo', 'data': {'fdset-id': 'int', 'fd': 'int'} }
 299
 300##
 301# @add-fd:
 302#
 303# Add a file descriptor, that was passed via SCM rights, to an fd set.
 304#
 305# @fdset-id: The ID of the fd set to add the file descriptor to.
 306#
 307# @opaque: A free-form string that can be used to describe the fd.
 308#
 309# Returns: - @AddfdInfo on success
 310#          - If file descriptor was not received, FdNotSupplied
 311#          - If @fdset-id is a negative value, InvalidParameterValue
 312#
 313# Notes: The list of fd sets is shared by all monitor connections.
 314#
 315#        If @fdset-id is not specified, a new fd set will be created.
 316#
 317# Since: 1.2
 318#
 319# Example:
 320#
 321# -> { "execute": "add-fd", "arguments": { "fdset-id": 1 } }
 322# <- { "return": { "fdset-id": 1, "fd": 3 } }
 323#
 324##
 325{ 'command': 'add-fd',
 326  'data': { '*fdset-id': 'int',
 327            '*opaque': 'str' },
 328  'returns': 'AddfdInfo' }
 329
 330##
 331# @remove-fd:
 332#
 333# Remove a file descriptor from an fd set.
 334#
 335# @fdset-id: The ID of the fd set that the file descriptor belongs to.
 336#
 337# @fd: The file descriptor that is to be removed.
 338#
 339# Returns: - Nothing on success
 340#          - If @fdset-id or @fd is not found, FdNotFound
 341#
 342# Since: 1.2
 343#
 344# Notes: The list of fd sets is shared by all monitor connections.
 345#
 346#        If @fd is not specified, all file descriptors in @fdset-id
 347#        will be removed.
 348#
 349# Example:
 350#
 351# -> { "execute": "remove-fd", "arguments": { "fdset-id": 1, "fd": 3 } }
 352# <- { "return": {} }
 353#
 354##
 355{ 'command': 'remove-fd', 'data': {'fdset-id': 'int', '*fd': 'int'} }
 356
 357##
 358# @FdsetFdInfo:
 359#
 360# Information about a file descriptor that belongs to an fd set.
 361#
 362# @fd: The file descriptor value.
 363#
 364# @opaque: A free-form string that can be used to describe the fd.
 365#
 366# Since: 1.2
 367##
 368{ 'struct': 'FdsetFdInfo',
 369  'data': {'fd': 'int', '*opaque': 'str'} }
 370
 371##
 372# @FdsetInfo:
 373#
 374# Information about an fd set.
 375#
 376# @fdset-id: The ID of the fd set.
 377#
 378# @fds: A list of file descriptors that belong to this fd set.
 379#
 380# Since: 1.2
 381##
 382{ 'struct': 'FdsetInfo',
 383  'data': {'fdset-id': 'int', 'fds': ['FdsetFdInfo']} }
 384
 385##
 386# @query-fdsets:
 387#
 388# Return information describing all fd sets.
 389#
 390# Returns: A list of @FdsetInfo
 391#
 392# Since: 1.2
 393#
 394# Note: The list of fd sets is shared by all monitor connections.
 395#
 396# Example:
 397#
 398# -> { "execute": "query-fdsets" }
 399# <- { "return": [
 400#        {
 401#          "fds": [
 402#            {
 403#              "fd": 30,
 404#              "opaque": "rdonly:/path/to/file"
 405#            },
 406#            {
 407#              "fd": 24,
 408#              "opaque": "rdwr:/path/to/file"
 409#            }
 410#          ],
 411#          "fdset-id": 1
 412#        },
 413#        {
 414#          "fds": [
 415#            {
 416#              "fd": 28
 417#            },
 418#            {
 419#              "fd": 29
 420#            }
 421#          ],
 422#          "fdset-id": 0
 423#        }
 424#      ]
 425#    }
 426#
 427##
 428{ 'command': 'query-fdsets', 'returns': ['FdsetInfo'] }
 429
 430##
 431# @CommandLineParameterType:
 432#
 433# Possible types for an option parameter.
 434#
 435# @string: accepts a character string
 436#
 437# @boolean: accepts "on" or "off"
 438#
 439# @number: accepts a number
 440#
 441# @size: accepts a number followed by an optional suffix (K)ilo,
 442#        (M)ega, (G)iga, (T)era
 443#
 444# Since: 1.5
 445##
 446{ 'enum': 'CommandLineParameterType',
 447  'data': ['string', 'boolean', 'number', 'size'] }
 448
 449##
 450# @CommandLineParameterInfo:
 451#
 452# Details about a single parameter of a command line option.
 453#
 454# @name: parameter name
 455#
 456# @type: parameter @CommandLineParameterType
 457#
 458# @help: human readable text string, not suitable for parsing.
 459#
 460# @default: default value string (since 2.1)
 461#
 462# Since: 1.5
 463##
 464{ 'struct': 'CommandLineParameterInfo',
 465  'data': { 'name': 'str',
 466            'type': 'CommandLineParameterType',
 467            '*help': 'str',
 468            '*default': 'str' } }
 469
 470##
 471# @CommandLineOptionInfo:
 472#
 473# Details about a command line option, including its list of parameter details
 474#
 475# @option: option name
 476#
 477# @parameters: an array of @CommandLineParameterInfo
 478#
 479# Since: 1.5
 480##
 481{ 'struct': 'CommandLineOptionInfo',
 482  'data': { 'option': 'str', 'parameters': ['CommandLineParameterInfo'] } }
 483
 484##
 485# @query-command-line-options:
 486#
 487# Query command line option schema.
 488#
 489# @option: option name
 490#
 491# Returns: list of @CommandLineOptionInfo for all options (or for the given
 492#          @option).  Returns an error if the given @option doesn't exist.
 493#
 494# Since: 1.5
 495#
 496# Example:
 497#
 498# -> { "execute": "query-command-line-options",
 499#      "arguments": { "option": "option-rom" } }
 500# <- { "return": [
 501#         {
 502#             "parameters": [
 503#                 {
 504#                     "name": "romfile",
 505#                     "type": "string"
 506#                 },
 507#                 {
 508#                     "name": "bootindex",
 509#                     "type": "number"
 510#                 }
 511#             ],
 512#             "option": "option-rom"
 513#         }
 514#      ]
 515#    }
 516#
 517##
 518{'command': 'query-command-line-options',
 519 'data': { '*option': 'str' },
 520 'returns': ['CommandLineOptionInfo'],
 521 'allow-preconfig': true }
 522