All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 0/2] QMP: Commands doc
@ 2010-04-30 17:03 Luiz Capitulino
  2010-04-30 17:03 ` [Qemu-devel] [PATCH 1/2] QMP: Introduce commands doc Luiz Capitulino
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Luiz Capitulino @ 2010-04-30 17:03 UTC (permalink / raw)
  To: qemu-devel; +Cc: bazulay, juzhang, armbru

Details in the patches.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Qemu-devel] [PATCH 1/2] QMP: Introduce commands doc
  2010-04-30 17:03 [Qemu-devel] [PATCH 0/2] QMP: Commands doc Luiz Capitulino
@ 2010-04-30 17:03 ` Luiz Capitulino
  2010-05-03 16:24   ` Markus Armbruster
  2010-04-30 17:03 ` [Qemu-devel] [PATCH 2/2] Monitor: Drop QMP documentation from code Luiz Capitulino
  2010-04-30 17:30 ` [Qemu-devel] [PATCH 0/2] QMP: Commands doc Kevin Wolf
  2 siblings, 1 reply; 8+ messages in thread
From: Luiz Capitulino @ 2010-04-30 17:03 UTC (permalink / raw)
  To: qemu-devel; +Cc: bazulay, juzhang, armbru

One of the most important missing feature in QMP today is its
supported command documentation.

The plan is to make it part of self-description support, however
self-description is a big task we have been postponing for a
long time now and still don't know when it's going to be done.

In order not to compromise QMP adoption and make users' life easier,
this commit adds a simple text documentation which fully describes
all QMP supported commands.

This is not ideal for a number of reasons (harder to maintain,
text-only, etc) but is a lot better than the current situation.

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
---
 QMP/qmp-commands.txt |  859 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 859 insertions(+), 0 deletions(-)
 create mode 100644 QMP/qmp-commands.txt

diff --git a/QMP/qmp-commands.txt b/QMP/qmp-commands.txt
new file mode 100644
index 0000000..2f9c448
--- /dev/null
+++ b/QMP/qmp-commands.txt
@@ -0,0 +1,859 @@
+                        QMP Supported Commands
+                        ----------------------
+
+This document describes all commands currently supported by QMP.
+
+Most of the time their usage is exactly the same as in the user Monitor,
+this means that any other document which also describe commands (the manpage,
+QEMU's manual, etc) can and should be consulted.
+
+QMP has two types of commands: regular and query commands. Regular commands
+usually change the Virtual Machine's state someway, while query commands just
+return information. The sections below are divided accordingly.
+
+It's also important to observe that the 'example' subsection is different
+for regular and query commands. For the former, a complete input line as it
+should be issued by the Client is shown. For the latter, what is shown is
+the complete Server response, whose members might be in different order when
+in real protocol usage.
+
+Please, refert to the QMP specification (QMP/qmp-spec.txt file) for detailed
+information on the Server command and response formats.
+
+NOTE: This document is temporary and will be replaced soon.
+
+1. Regular Commands
+===================
+
+balloon
+-------
+
+Request VM to change its memory allocation (in bytes).
+
+Arguments:
+
+- "value": New memory allocation (json-int)
+
+Example:
+
+{ "execute": "balloon", "arguments": { "value": 536870912 } }
+
+block_passwd
+------------
+
+Set the password of encrypted block devices.
+
+Arguments:
+
+- "device": device name (json-string)
+- "password": password (json-string)
+
+Example:
+
+{ "execute": "block_passwd", "arguments": { "device": "ide0-hd0",
+                                            "password": "12345" } }
+
+change
+------
+
+Change a removable medium or VNC configuration.
+
+Arguments:
+
+- "device": device name (json-string)
+- "target": filename or item (json-string)
+- "arg": additional argument (json-string, optional)
+
+Examples:
+
+{ "execute": "change",
+             "arguments": { "device": "ide1-cd0",
+                            "target": "/srv/images/Fedora-12-x86_64-DVD.iso" } }
+
+{ "execute": "change",
+             "arguments": { "device": "vnc",
+                            "target": "password",
+                            "arg": "foobar1" } }
+
+closefd
+-------
+
+Close a file descriptor previously passed via SCM rights.
+
+Arguments:
+
+- "fdname": file descriptor name (json-string)
+
+Example:
+
+{ "execute": "closefd", "arguments": { "name": "fd1" } }
+
+cont
+----
+
+Resume emulation.
+
+Arguments: None.
+
+Example:
+
+{ "execute": "cont" }
+
+cpu
+---
+
+Set the default CPU.
+
+Arguments:
+
+- "index": the CPU's index (json-int)
+
+Example:
+
+{ "execute": "cpu", "arguments": { "index": 0 } }
+
+Note: CPUs' indexes are obtained with the 'query-cpus' command.
+
+device_add
+----------
+
+Add a device.
+
+Arguments:
+
+- "driver": the name of the new device's driver (json-string)
+- "bus": the device's parent bus (device tree path, json-string)
+- "id": the device's ID, must be unique (json-string)
+- device properties
+
+Example:
+
+{ "execute": "device_add", "arguments": { "driver": "e1000", "id": "net1" } }
+
+Note: For detailed information about this command, please refer to the
+      'docs/qdev-device-use.txt' file.
+
+device_del
+----------
+
+Remove a device.
+
+Arguments:
+
+- "id": the device's ID (json-string)
+
+Example:
+
+{ "execute": "device_del", "arguments": { "id": "net1" } }
+
+eject
+-----
+
+Eject a removable medium.
+
+Arguments: 
+
+- force: force ejection (json-bool, optional)
+- device: device name (json-string)
+
+Example:
+
+{ "execute": "eject", "arguments": { "device": "ide1-cd0" } }
+
+Note: The "force" argument defaults to false.
+
+getfd
+-----
+
+Receive a file descriptor via SCM rights and assign it a name.
+
+Arguments:
+
+- "fdname": file descriptor name (json-string)
+
+Example:
+
+{ "execute": "getfd", "arguments": { "name": "fd1" } }
+
+memsave
+-------
+
+Save to disk virtual memory dump starting at 'val' of size 'size'.
+
+Arguments:
+
+- "val": the starting address (json-int)
+- "size": the memory size (json-int)
+- "filename": file path (json-string)
+
+Example:
+
+{ "execute": "memsave",
+             "arguments": { "val": 10,
+                            "size": 100,
+                            "filename": "/tmp/virtual-mem-dump" } }
+
+migrate
+-------
+
+Migrate to URI.
+
+Arguments:
+
+- "blk": block migration, full disk copy (json-bool, optional)
+- "inc": incremental disk copy (json-bool, optional)
+- "uri": Destination URI (json-string, optional)
+
+Example:
+
+{ "execute": "migrate", "arguments": { "uri": "tcp:0:4446" } }
+
+Notes:
+
+(1) The 'query-migrate' command should be used to check migration's progress
+    and final result (this information is provided by the 'status' member)
+(2) All boolean arguments default to false
+(3) The user Monitor's "detach" argument is invalid in QMP and should not
+    be used
+
+migrate_cancel
+--------------
+
+Cancel the current migration.
+
+Arguments: None.
+
+Example:
+
+{ "execute": "migrate_cancel" }
+
+migrate_set_downtime
+--------------------
+
+Set maximum tolerated downtime (in seconds) for migrations.
+
+Arguments:
+
+- "value": maximum downtime (json-number)
+
+Example:
+
+{ "execute": "migrate_set_downtime", "arguments": { "value": 60 } }
+
+migrate_set_speed
+-----------------
+
+Set maximum speed (in bytes) for migrations.
+
+Arguments:
+
+- "value": maximum speed (json-number)
+
+Example:
+
+{ "execute": "migrate_set_speed", "arguments": { "value": 1024 } }
+
+netdev_add
+----------
+
+Add host network device.
+
+Arguments:
+
+- "type": the device type, "tap", "user", ... (json-string)
+- "id": the device's ID, must be unique (json-string)
+- device options
+
+Example:
+
+{ "execute": "netdev_add", "arguments": { "type": "user", "id": "netdev1" } }
+
+netdev_del
+----------
+
+Remove host network device.
+
+Arguments:
+
+- "id": the device's ID, must be unique (json-string)
+
+Example:
+
+{ "execute": "netdev_del", "arguments": { "id": "netdev1" } }
+
+pmemsave
+--------
+
+Save to disk physical memory dump starting at 'val' of size 'size'.
+
+Arguments:
+
+- "val": the starting address (json-int)
+- "size": the memory size (json-int)
+- "filename": file path (json-string)
+
+Example:
+
+{ "execute": "pmemsave",
+             "arguments": { "val": 10,
+                            "size": 100,
+                            "filename": "/tmp/physical-mem-dump" } }
+
+qmp_capabilities
+----------------
+
+Enable QMP capabilities.
+
+Arguments: None.
+
+Note: This command must be issued before issuing any other command.
+
+quit
+----
+
+Quit the emulator.
+
+Arguments: None.
+
+Example:
+
+{ "execute": "quit" }
+
+screendump
+----------
+
+Save screen into PPM image.
+
+Arguments:
+
+- "filename": file path (json-string)
+
+Example:
+
+{ "execute": "screendump", "arguments": { "filename": "/tmp/image" } }
+
+set_link
+--------
+
+Change the link status of a network adapter.
+
+Arguments:
+
+- "name": network device name (json-string)
+- "up": status is up (json-bool)
+
+Example:
+
+{ "execute": "set_link", "arguments": { "name": "e1000.0", "up": false } }
+
+stop
+----
+
+Stop the emulator.
+
+Arguments: None.
+
+Example:
+
+{ "execute": "stop" }
+
+system_powerdown
+----------------
+
+Send system power down event.
+
+Arguments: None.
+
+Example:
+
+{ "execute": "system_powerdown" }
+
+system_reset
+------------
+
+Reset the system.
+
+Arguments: None.
+
+Example:
+
+{ "execute": "system_reset" }
+
+
+2. Query Commands
+=================
+
+query-balloon
+-------------
+
+Show balloon information.
+
+Make an asynchronous request for balloon info. When the request completes a
+json-object will be returned containing the following data:
+
+- "actual": current balloon value in bytes (json-int)
+- "mem_swapped_in": Amount of memory swapped in bytes (json-int, optional)
+- "mem_swapped_out": Amount of memory swapped out in bytes (json-int, optional)
+- "major_page_faults": Number of major faults (json-int, optional)
+- "minor_page_faults": Number of minor faults (json-int, optional)
+- "free_mem":Total amount of free and unused memory in bytes (json-int,optional)
+- "total_mem": Total amount of available memory in bytes (json-int, optional)
+
+Example:
+
+{ "return": { "actual": 1073741824,
+              "mem_swapped_in": 0,
+              "mem_swapped_out": 0,
+              "major_page_faults": 142,
+              "minor_page_faults": 239245,
+              "free_mem": 1014185984,
+              "total_mem": 1044668416 } }
+
+query-block
+-----------
+
+Show the block devices.
+
+Each block device information is stored in a json-object and the returned value
+is a json-array of all devices.
+
+Each json-object contain the following:
+
+- "device": device name (json-string)
+- "type": device type (json-string)
+- "removable": true if the device is removable, false otherwise (json-bool)
+- "locked": true if the device is locked, false otherwise (json-bool)
+- "inserted": only present if the device is inserted, it is a json-object
+   containing the following:
+         - "file": device file name (json-string)
+         - "ro": true if read-only, false otherwise (json-bool)
+         - "drv": driver format name (json-string)
+         - "backing_file": backing file name if one is used (json-string)
+         - "encrypted": true if encrypted, false otherwise (json-bool)
+
+Example:
+
+{ "return": [ { "device": "ide0-hd0",
+                "type": "hd",
+                "removable": false,
+                "locked": false,
+                "inserted": { "file": "/tmp/foobar",
+                              "ro": false,
+                              "drv": "qcow2" } },
+              { "device": "floppy0",
+                "type": "floppy",
+                "removable": true,
+                "locked": false } ] }
+
+query-blockstats
+----------------
+
+Show block device statistics.
+
+Each device statistic information is stored in a json-object and the returned
+value is a json-array of all devices.
+
+Each json-object contain the following:
+
+- "device": device name (json-string)
+- "stats": A json-object with the statistics information, it contains:
+    - "rd_bytes": bytes read (json-int)
+    - "wr_bytes": bytes written (json-int)
+    - "rd_operations": read operations (json-int)
+    - "wr_operations": write operations (json-int)
+
+Example:
+
+{ "return": [ { "device": "ide0-hd0",
+                "stats": { "rd_bytes": 512,
+                           "wr_bytes": 0,
+                           "rd_operations": 1,
+                           "wr_operations": 0 } },
+              { "device": "ide1-cd0",
+                "stats": { "rd_bytes": 0,
+                           "wr_bytes": 0,
+                           "rd_operations": 0,
+                           "wr_operations": 0 } } ] }
+
+query-chardev
+-------------
+
+Each device is represented by a json-object. The returned value is a json-array
+of all devices.
+
+Each json-object contain the following:
+
+- "label": device's label (json-string)
+- "filename": device's file (json-string)
+
+Example:
+
+{ "return": [ { "label": "monitor", "filename", "stdio" },
+              { "label": "serial0", "filename": "vc" } ] }
+
+query-commands
+--------------
+
+List QMP available commands.
+
+Each command is represented by a json-object, the returned value is a json-array
+of all commands.
+
+Each json-object contain:
+
+- "name": command's name (json-string)
+
+Example:
+
+{ "return": [ { "name": "query-balloon" },
+              { "name": "system_powerdown" } ] }
+
+Note: This example has been shortened as the real response is too long.
+
+query-cpus
+----------
+
+Show CPU information.
+
+Return a json-array. Each CPU is represented by a json-object, which contains:
+
+- "cpu": CPU index (json-int)
+- "current": true if this is the current CPU, false otherwise (json-bool)
+- "halted": true if the cpu is halted, false otherwise (json-bool)
+- Current program counter. The key's name depends on the architecture:
+     "pc": i386/x86_64 (json-int)
+     "nip": PPC (json-int)
+     "pc" and "npc": sparc (json-int)
+     "PC": mips (json-int)
+
+Example:
+
+{ "return": [ { "CPU": 0,
+                "current": true,
+                "halted": false,
+                "pc": 3227107138 },
+              { "CPU": 1,
+                "current": false,
+                "halted": true,
+                "pc": 7108165 } ] }
+
+query-hpet
+----------
+
+Show HPET state.
+
+Return a json-object with the following information:
+
+- "enabled": true if hpet if enabled, false otherwise (json-bool)
+
+Example:
+
+{ "return": { "enabled": true } }
+
+query-kvm
+---------
+
+Show KVM information.
+
+Return a json-object with the following information:
+
+- "enabled": true if KVM support is enabled, false otherwise (json-bool)
+- "present": true if QEMU has KVM support, false otherwise (json-bool)
+
+Example:
+
+{ "return": { "enabled": true, "present": true } }
+
+query-mice
+----------
+
+Show VM mice information.
+
+Each mouse is represented by a json-object, the returned value is a json-array
+of all mice.
+
+The mouse json-object contains the following:
+
+- "name": mouse's name (json-string)
+- "index": mouse's index (json-int)
+- "current": true if this mouse is receiving events, false otherwise (json-bool)
+- "absolute": true if the mouse generates absolute input events (json-bool)
+
+Example:
+
+{ "return": [ { "name": "QEMU Microsoft Mouse",
+                "index": 0,
+                "current": false,
+                "absolute": false },
+              { "name": "QEMU PS/2 Mouse",
+                "index": 1,
+                "current": true,
+                "absolute": true } ] }
+
+query-migrate
+-------------
+
+Migration status.
+
+Return a json-object. If migration is active there will be another json-object
+with RAM migration status and if block migration is active another one with
+block migration status.
+
+The main json-object contains the following:
+
+- "status": migration status (json-string)
+- "ram": only present if "status" is "active", it is a json-object with the
+  following RAM information (in bytes):
+         - "transferred": amount transferred (json-int)
+         - "remaining": amount remaining (json-int)
+         - "total": total (json-int)
+- "disk": only present if "status" is "active" and it is a block migration,
+  it is a json-object with the following disk information (in bytes):
+         - "transferred": amount transferred (json-int)
+         - "remaining": amount remaining (json-int)
+         - "total": total (json-int)
+
+Examples:
+
+1. Migration is "completed":
+
+{ "return": { "status": "completed" } }
+
+2. Migration is "active" and it is not a block migration:
+
+{ "return": { "status": "active",
+              "ram": { "transferred": 123,
+                       "remaining": 123,
+                       "total": 246 } } }
+
+3. Migration is "active" and it is a block migration:
+
+{ "return": { "status": "active",
+              "ram": { "total": 1057024,
+                       "remaining": 1053304,
+                       "transferred": 3720 },
+              "disk": { "total": 20971520,
+                        "remaining": 20880384,
+                        "transferred": 91136 } } }
+
+query-name
+----------
+
+Show VM name.
+
+Return a json-object with the following information:
+
+- "name": VM's name (json-string, optional)
+
+Example:
+
+{ "return": { "name": "qemu-name" } }
+
+query-pci
+---------
+
+PCI buses and devices information.
+
+The returned value is a json-array of all buses. Each bus is represented by
+a json-object, which has a key with a json-array of all PCI devices attached
+to it. Each device is represented by a json-object.
+
+The bus json-object contains the following:
+
+- "bus": bus number (json-int)
+- "devices": a json-array of json-objects, each json-object represents a
+             PCI device
+
+The PCI device json-object contains the following:
+
+- "bus": identical to the parent's bus number (json-int)
+- "slot": slot number (json-int)
+- "function": function number (json-int)
+- "class_info": a json-object containing:
+     - "desc": device class description (json-string, optional)
+     - "class": device class number (json-int)
+- "id": a json-object containing:
+     - "device": device ID (json-int)
+     - "vendor": vendor ID (json-int)
+- "irq": device's IRQ if assigned (json-int, optional)
+- "qdev_id": qdev id string (json-string)
+- "pci_bridge": It's a json-object, only present if this device is a
+                PCI bridge, contains:
+     - "bus": bus number (json-int)
+     - "secondary": secondary bus number (json-int)
+     - "subordinate": subordinate bus number (json-int)
+     - "io_range": a json-object with memory range information (json-int)
+     - "memory_range": a json-object with memory range information (json-int)
+     - "prefetchable_range": a json-object with memory range
+                             information (json-int)
+     - "devices": a json-array of PCI devices if there's any attached (optional)
+- "regions": a json-array of json-objects, each json-object represents a
+             memory region of this device
+
+The memory range json-object contains the following:
+
+- "base": base memory address (json-int)
+- "limit": limit value (json-int)
+
+The region json-object can be an I/O region or a memory region, an I/O region
+json-object contains the following:
+
+- "type": "io" (json-string, fixed)
+- "bar": BAR number (json-int)
+- "address": memory address (json-int)
+- "size": memory size (json-int)
+
+A memory region json-object contains the following:
+
+- "type": "memory" (json-string, fixed)
+- "bar": BAR number (json-int)
+- "address": memory address (json-int)
+- "size": memory size (json-int)
+- "mem_type_64": true or false (json-bool)
+- "prefetch": true or false (json-bool)
+
+Example:
+
+{ "return": [ { "bus": 0,
+                "devices": [ { "bus": 0,
+                               "qdev_id": "",
+                               "slot": 0,
+                               "class_info": { "class": 1536,
+                                               "desc": "Host bridge" },
+                               "id": { "device": 32902, "vendor": 4663 },
+                               "function": 0,
+                               "regions": [] },
+                             { "bus": 0,
+                               "qdev_id": "",
+                               "slot": 1,
+                               "class_info": { "class": 1537,
+                                               "desc": "ISA bridge" },
+                               "id": { "device": 32902, "vendor": 28672 },
+                               "function": 0,
+                               "regions": [] },
+                               { "bus": 0,
+                                 "qdev_id": "",
+                                 "slot": 1,
+                                 "class_info": { "class": 257,
+                                                 "desc": "IDE controller" },
+                                 "id": { "device": 32902, "vendor": 28688 },
+                                 "function": 1,
+                                 "regions": [ { "bar": 4,
+                                                "size": 16,
+                                                "address": 49152,
+                                                "type": "io" } ] },
+                               { "bus": 0,
+                                 "qdev_id": "",
+                                 "slot": 2,
+                                 "class_info": { "class": 768,
+                                                 "desc": "VGA controller" },
+                                 "id": { "device": 4115, "vendor": 184 },
+                                 "function": 0,
+                                 "regions": [ { "prefetch": true,
+                                                "mem_type_64": false,
+                                                "bar": 0,
+                                                "size": 33554432,
+                                                "address": 4026531840,
+                                                "type": "memory" },
+                                               { "prefetch": false,
+                                                 "mem_type_64": false,
+                                                 "bar": 1,
+                                                 "size": 4096,
+                                                 "address": 4060086272,
+                                                 "type": "memory" },
+                                               { "prefetch": false,
+                                                 "mem_type_64": false,
+                                                 "bar": 6,
+                                                 "size": 65536,
+                                                 "address": -1,
+                                                 "type": "memory" } ] },
+                               { "bus": 0,
+                                 "qdev_id": "",
+                                 "irq": 11,
+                                 "slot": 4,
+                                 "class_info": { "class": 1280,
+                                                 "desc": "RAM controller" },
+                                 "id": { "device": 6900, "vendor": 4098 },
+                                 "function": 0,
+                                 "regions": [ { "bar": 0,
+                                                "size": 32,
+                                                "address": 49280,
+                                                "type": "io" } ] } ] } ] }
+
+Note: This example has been shortened as the real response is too long.
+
+query-status
+------------
+
+Return a json-object with the following information:
+
+- "running": true if the VM is running, or false if it is paused (json-bool)
+- "singlestep": true if the VM is in single step mode,
+                false otherwise (json-bool)
+
+Example:
+
+{ "return": { "running": true, "singlestep": false } }
+
+query-uuid
+----------
+
+Show VM UUID.
+
+Return a json-object with the following information:
+
+- "UUID": Universally Unique Identifier (json-string)
+
+Example:
+
+{ "return": { "UUID": "550e8400-e29b-41d4-a716-446655440000" } }
+
+query-version
+-------------
+
+Show QEMU version.
+
+Return a json-object with the following information:
+
+- "qemu": QEMU's version (json-string)
+- "package": package's version (json-string)
+
+Example:
+
+{ "return": { "qemu": "0.11.50", "package": "" } }
+
+query-vnc
+---------
+
+Show VNC server information.
+
+Return a json-object with server information. Connected clients are returned
+as a json-array of json-objects.
+
+The main json-object contains the following:
+
+- "enabled": true or false (json-bool)
+- "host": server's IP address (json-string)
+- "family": address family (json-string, "ipv4" or "ipv6")
+- "service": server's port number (json-string)
+- "auth": authentication method (json-string)
+- "clients": a json-array of all connected clients
+
+Clients are described by a json-object, each one contain the following:
+
+- "host": client's IP address (json-string)
+- "family": address family (json-string, "ipv4" or "ipv6")
+- "service": client's port number (json-string)
+- "x509_dname": TLS dname (json-string, optional)
+- "sasl_username": SASL username (json-string, optional)
+
+Example:
+
+{ "return": { "enabled": true,
+              "host": "0.0.0.0",
+              "service": "50402",
+              "auth": "vnc",
+              "family": "ipv4",
+              "clients": [ { "host": "127.0.0.1",
+                             "service": "50401",
+                             "family": "ipv4" } ] } }
-- 
1.7.1.rc1.12.ga6018

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [Qemu-devel] [PATCH 2/2] Monitor: Drop QMP documentation from code
  2010-04-30 17:03 [Qemu-devel] [PATCH 0/2] QMP: Commands doc Luiz Capitulino
  2010-04-30 17:03 ` [Qemu-devel] [PATCH 1/2] QMP: Introduce commands doc Luiz Capitulino
@ 2010-04-30 17:03 ` Luiz Capitulino
  2010-04-30 17:30 ` [Qemu-devel] [PATCH 0/2] QMP: Commands doc Kevin Wolf
  2 siblings, 0 replies; 8+ messages in thread
From: Luiz Capitulino @ 2010-04-30 17:03 UTC (permalink / raw)
  To: qemu-devel; +Cc: bazulay, juzhang, armbru

Previous commit added the QMP/qmp-commands.txt file, which is a
copy of this information.

While it's good to keep it near code, maintaining two copies of
the information is too hard and has little benefit as we don't
expect client writers to consult the code to find this kind of
documentation.

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
---
 block.c     |   55 --------------------------------
 hw/pci.c    |   61 -----------------------------------
 hw/qdev.c   |   13 -------
 input.c     |   18 ----------
 migration.c |   38 ----------------------
 monitor.c   |  102 -----------------------------------------------------------
 net.c       |   22 -------------
 qemu-char.c |   16 ---------
 vnc.c       |   29 -----------------
 9 files changed, 0 insertions(+), 354 deletions(-)

diff --git a/block.c b/block.c
index 1179b1c..bba5c40 100644
--- a/block.c
+++ b/block.c
@@ -1307,33 +1307,6 @@ void bdrv_info_print(Monitor *mon, const QObject *data)
     qlist_iter(qobject_to_qlist(data), bdrv_print_dict, mon);
 }
 
-/**
- * bdrv_info(): Block devices information
- *
- * Each block device information is stored in a QDict and the
- * returned QObject is a QList of all devices.
- *
- * The QDict contains the following:
- *
- * - "device": device name
- * - "type": device type
- * - "removable": true if the device is removable, false otherwise
- * - "locked": true if the device is locked, false otherwise
- * - "inserted": only present if the device is inserted, it is a QDict
- *    containing the following:
- *          - "file": device file name
- *          - "ro": true if read-only, false otherwise
- *          - "drv": driver format name
- *          - "backing_file": backing file name if one is used
- *          - "encrypted": true if encrypted, false otherwise
- *
- * Example:
- *
- * [ { "device": "ide0-hd0", "type": "hd", "removable": false, "locked": false,
- *     "inserted": { "file": "/tmp/foobar", "ro": false, "drv": "qcow2" } },
- *   { "device": "floppy0", "type": "floppy", "removable": true,
- *     "locked": false } ]
- */
 void bdrv_info(Monitor *mon, QObject **ret_data)
 {
     QList *bs_list;
@@ -1410,34 +1383,6 @@ void bdrv_stats_print(Monitor *mon, const QObject *data)
     qlist_iter(qobject_to_qlist(data), bdrv_stats_iter, mon);
 }
 
-/**
- * bdrv_info_stats(): show block device statistics
- *
- * Each device statistic information is stored in a QDict and
- * the returned QObject is a QList of all devices.
- *
- * The QDict contains the following:
- *
- * - "device": device name
- * - "stats": A QDict with the statistics information, it contains:
- *     - "rd_bytes": bytes read
- *     - "wr_bytes": bytes written
- *     - "rd_operations": read operations
- *     - "wr_operations": write operations
- * 
- * Example:
- *
- * [ { "device": "ide0-hd0",
- *               "stats": { "rd_bytes": 512,
- *                          "wr_bytes": 0,
- *                          "rd_operations": 1,
- *                          "wr_operations": 0 } },
- *   { "device": "ide1-cd0",
- *               "stats": { "rd_bytes": 0,
- *                          "wr_bytes": 0,
- *                          "rd_operations": 0,
- *                          "wr_operations": 0 } } ]
- */
 void bdrv_info_stats(Monitor *mon, QObject **ret_data)
 {
     QObject *obj;
diff --git a/hw/pci.c b/hw/pci.c
index f167436..1f96b34 100644
--- a/hw/pci.c
+++ b/hw/pci.c
@@ -1356,67 +1356,6 @@ static QObject *pci_get_bus_dict(PCIBus *bus, int bus_num)
     return NULL;
 }
 
-/**
- * do_pci_info(): PCI buses and devices information
- *
- * The returned QObject is a QList of all buses. Each bus is
- * represented by a QDict, which has a key with a QList of all
- * PCI devices attached to it. Each device is represented by
- * a QDict.
- *
- * The bus QDict contains the following:
- *
- * - "bus": bus number
- * - "devices": a QList of QDicts, each QDict represents a PCI
- *   device
- *
- * The PCI device QDict contains the following:
- *
- * - "bus": identical to the parent's bus number
- * - "slot": slot number
- * - "function": function number
- * - "class_info": a QDict containing:
- *      - "desc": device class description (optional)
- *      - "class": device class number
- * - "id": a QDict containing:
- *      - "device": device ID
- *      - "vendor": vendor ID
- * - "irq": device's IRQ if assigned (optional)
- * - "qdev_id": qdev id string
- * - "pci_bridge": It's a QDict, only present if this device is a
- *   PCI bridge, contains:
- *      - "bus": bus number
- *      - "secondary": secondary bus number
- *      - "subordinate": subordinate bus number
- *      - "io_range": a QDict with memory range information
- *      - "memory_range": a QDict with memory range information
- *      - "prefetchable_range": a QDict with memory range information
- *      - "devices": a QList of PCI devices if there's any attached (optional)
- * - "regions": a QList of QDicts, each QDict represents a
- *   memory region of this device
- *
- * The memory range QDict contains the following:
- *
- * - "base": base memory address
- * - "limit": limit value
- *
- * The region QDict can be an I/O region or a memory region,
- * an I/O region QDict contains the following:
- *
- * - "type": "io"
- * - "bar": BAR number
- * - "address": memory address
- * - "size": memory size
- *
- * A memory region QDict contains the following:
- *
- * - "type": "memory"
- * - "bar": BAR number
- * - "address": memory address
- * - "size": memory size
- * - "mem_type_64": true or false
- * - "prefetch": true or false
- */
 void do_pci_info(Monitor *mon, QObject **ret_data)
 {
     QList *bus_list;
diff --git a/hw/qdev.c b/hw/qdev.c
index d3bf0fa..4d23adf 100644
--- a/hw/qdev.c
+++ b/hw/qdev.c
@@ -767,19 +767,6 @@ void do_info_qdm(Monitor *mon)
     }
 }
 
-/**
- * do_device_add(): Add a device
- *
- * Argument qdict contains
- * - "driver": the name of the new device's driver
- * - "bus": the device's parent bus (device tree path)
- * - "id": the device's ID (must be unique)
- * - device properties
- *
- * Example:
- *
- * { "driver": "usb-net", "id": "eth1", "netdev": "netdev1" }
- */
 int do_device_add(Monitor *mon, const QDict *qdict, QObject **ret_data)
 {
     QemuOpts *opts;
diff --git a/input.c b/input.c
index 8f0941e..651442d 100644
--- a/input.c
+++ b/input.c
@@ -214,24 +214,6 @@ void do_info_mice_print(Monitor *mon, const QObject *data)
     qlist_iter(mice_list, info_mice_iter, mon);
 }
 
-/**
- * do_info_mice(): Show VM mice information
- *
- * Each mouse is represented by a QDict, the returned QObject is a QList of
- * all mice.
- *
- * The mouse QDict contains the following:
- *
- * - "name": mouse's name
- * - "index": mouse's index
- * - "current": true if this mouse is receiving events, false otherwise
- * - "absolute": true if the mouse generates absolute input events
- *
- * Example:
- *
- * [ { "name": "QEMU Microsoft Mouse", "index": 0, "current": false, "absolute": false },
- *   { "name": "QEMU PS/2 Mouse", "index": 1, "current": true, "absolute": true } ]
- */
 void do_info_mice(Monitor *mon, QObject **ret_data)
 {
     QEMUPutMouseEntry *cursor;
diff --git a/migration.c b/migration.c
index 05f6cc5..706fe55 100644
--- a/migration.c
+++ b/migration.c
@@ -197,44 +197,6 @@ static void migrate_put_status(QDict *qdict, const char *name,
     qdict_put_obj(qdict, name, obj);
 }
 
-/**
- * do_info_migrate(): Migration status
- *
- * Return a QDict. If migration is active there will be another
- * QDict with RAM migration status and if block migration is active
- * another one with block migration status.
- *
- * The main QDict contains the following:
- *
- * - "status": migration status
- * - "ram": only present if "status" is "active", it is a QDict with the
- *   following RAM information (in bytes):
- *          - "transferred": amount transferred
- *          - "remaining": amount remaining
- *          - "total": total
- * - "disk": only present if "status" is "active" and it is a block migration,
- *   it is a QDict with the following disk information (in bytes):
- *          - "transferred": amount transferred
- *          - "remaining": amount remaining
- *          - "total": total
- *
- * Examples:
- *
- * 1. Migration is "completed":
- *
- * { "status": "completed" }
- *
- * 2. Migration is "active" and it is not a block migration:
- *
- * { "status": "active",
- *            "ram": { "transferred": 123, "remaining": 123, "total": 246 } }
- *
- * 3. Migration is "active" and it is a block migration:
- *
- * { "status": "active",
- *   "ram": { "total": 1057024, "remaining": 1053304, "transferred": 3720 },
- *   "disk": { "total": 20971520, "remaining": 20880384, "transferred": 91136 }}
- */
 void do_info_migrate(Monitor *mon, QObject **ret_data)
 {
     QDict *qdict;
diff --git a/monitor.c b/monitor.c
index bb87479..5d5ace4 100644
--- a/monitor.c
+++ b/monitor.c
@@ -677,18 +677,6 @@ static void do_info_version_print(Monitor *mon, const QObject *data)
                                   qdict_get_str(qdict, "package"));
 }
 
-/**
- * do_info_version(): Show QEMU version
- *
- * Return a QDict with the following information:
- *
- * - "qemu": QEMU's version
- * - "package": package's version
- *
- * Example:
- *
- * { "qemu": "0.11.50", "package": "" }
- */
 static void do_info_version(Monitor *mon, QObject **ret_data)
 {
     *ret_data = qobject_from_jsonf("{ 'qemu': %s, 'package': %s }",
@@ -707,17 +695,6 @@ static void do_info_name_print(Monitor *mon, const QObject *data)
     monitor_printf(mon, "%s\n", qdict_get_str(qdict, "name"));
 }
 
-/**
- * do_info_name(): Show VM name
- *
- * Return a QDict with the following information:
- *
- * - "name": VM's name (optional)
- *
- * Example:
- *
- * { "name": "qemu-name" }
- */
 static void do_info_name(Monitor *mon, QObject **ret_data)
 {
     *ret_data = qemu_name ? qobject_from_jsonf("{'name': %s }", qemu_name) :
@@ -739,20 +716,6 @@ static QObject *get_cmd_dict(const char *name)
     return qobject_from_jsonf("{ 'name': %s }", p);
 }
 
-/**
- * do_info_commands(): List QMP available commands
- *
- * Each command is represented by a QDict, the returned QObject is a QList
- * of all commands.
- *
- * The QDict contains:
- *
- * - "name": command's name
- *
- * Example:
- *
- * { [ { "name": "query-balloon" }, { "name": "system_powerdown" } ] }
- */
 static void do_info_commands(Monitor *mon, QObject **ret_data)
 {
     QList *cmd_list;
@@ -785,17 +748,6 @@ static void do_info_hpet_print(Monitor *mon, const QObject *data)
                    "enabled" : "disabled");
 }
 
-/**
- * do_info_hpet(): Show HPET state
- *
- * Return a QDict with the following information:
- *
- * - "enabled": true if hpet if enabled, false otherwise
- *
- * Example:
- *
- * { "enabled": true }
- */
 static void do_info_hpet(Monitor *mon, QObject **ret_data)
 {
     *ret_data = qobject_from_jsonf("{ 'enabled': %i }", !no_hpet);
@@ -807,17 +759,6 @@ static void do_info_uuid_print(Monitor *mon, const QObject *data)
     monitor_printf(mon, "%s\n", qdict_get_str(qobject_to_qdict(data), "UUID"));
 }
 
-/**
- * do_info_uuid(): Show VM UUID
- *
- * Return a QDict with the following information:
- *
- * - "UUID": Universally Unique Identifier
- *
- * Example:
- *
- * { "UUID": "550e8400-e29b-41d4-a716-446655440000" }
- */
 static void do_info_uuid(Monitor *mon, QObject **ret_data)
 {
     char uuid[64];
@@ -913,25 +854,6 @@ static void monitor_print_cpus(Monitor *mon, const QObject *data)
     qlist_iter(cpu_list, print_cpu_iter, mon);
 }
 
-/**
- * do_info_cpus(): Show CPU information
- *
- * Return a QList. Each CPU is represented by a QDict, which contains:
- *
- * - "cpu": CPU index
- * - "current": true if this is the current CPU, false otherwise
- * - "halted": true if the cpu is halted, false otherwise
- * - Current program counter. The key's name depends on the architecture:
- *      "pc": i386/x86)64
- *      "nip": PPC
- *      "pc" and "npc": sparc
- *      "PC": mips
- *
- * Example:
- *
- * [ { "CPU": 0, "current": true, "halted": false, "pc": 3227107138 },
- *   { "CPU": 1, "current": false, "halted": true, "pc": 7108165 } ]
- */
 static void do_info_cpus(Monitor *mon, QObject **ret_data)
 {
     CPUState *env;
@@ -2102,18 +2024,6 @@ static void do_info_kvm_print(Monitor *mon, const QObject *data)
     }
 }
 
-/**
- * do_info_kvm(): Show KVM information
- *
- * Return a QDict with the following information:
- *
- * - "enabled": true if KVM support is enabled, false otherwise
- * - "present": true if QEMU has KVM support, false otherwise
- *
- * Example:
- *
- * { "enabled": true, "present": true }
- */
 static void do_info_kvm(Monitor *mon, QObject **ret_data)
 {
 #ifdef CONFIG_KVM
@@ -2257,18 +2167,6 @@ static void do_info_status_print(Monitor *mon, const QObject *data)
     monitor_printf(mon, "\n");
 }
 
-/**
- * do_info_status(): VM status
- *
- * Return a QDict with the following information:
- *
- * - "running": true if the VM is running, or false if it is paused
- * - "singlestep": true if the VM is in single step mode, false otherwise
- *
- * Example:
- *
- * { "running": true, "singlestep": false }
- */
 static void do_info_status(Monitor *mon, QObject **ret_data)
 {
     *ret_data = qobject_from_jsonf("{ 'running': %i, 'singlestep': %i }",
diff --git a/net.c b/net.c
index 378edfc..efa8b3d 100644
--- a/net.c
+++ b/net.c
@@ -1194,18 +1194,6 @@ void net_host_device_remove(Monitor *mon, const QDict *qdict)
     qemu_del_vlan_client(vc);
 }
 
-/**
- * do_netdev_add(): Add a host network device
- *
- * Argument qdict contains
- * - "type": the device type, "tap", "user", ...
- * - "id": the device's ID (must be unique)
- * - device options
- *
- * Example:
- *
- * { "type": "user", "id": "netdev1", "hostname": "a-guest" }
- */
 int do_netdev_add(Monitor *mon, const QDict *qdict, QObject **ret_data)
 {
     QemuOpts *opts;
@@ -1220,16 +1208,6 @@ int do_netdev_add(Monitor *mon, const QDict *qdict, QObject **ret_data)
     return res;
 }
 
-/**
- * do_netdev_del(): Delete a host network device
- *
- * Argument qdict contains
- * - "id": the device's ID
- *
- * Example:
- *
- * { "id": "netdev1" }
- */
 int do_netdev_del(Monitor *mon, const QDict *qdict, QObject **ret_data)
 {
     const char *id = qdict_get_str(qdict, "id");
diff --git a/qemu-char.c b/qemu-char.c
index ac65a1c..faaf624 100644
--- a/qemu-char.c
+++ b/qemu-char.c
@@ -2528,22 +2528,6 @@ void qemu_chr_info_print(Monitor *mon, const QObject *ret_data)
     qlist_iter(qobject_to_qlist(ret_data), qemu_chr_qlist_iter, mon);
 }
 
-/**
- * qemu_chr_info(): Character devices information
- *
- * Each device is represented by a QDict. The returned QObject is a QList
- * of all devices.
- *
- * The QDict contains the following:
- *
- * - "label": device's label
- * - "filename": device's file
- *
- * Example:
- *
- * [ { "label": "monitor", "filename", "stdio" },
- *   { "label": "serial0", "filename": "vc" } ]
- */
 void qemu_chr_info(Monitor *mon, QObject **ret_data)
 {
     QList *chr_list;
diff --git a/vnc.c b/vnc.c
index d332099..f9f147d 100644
--- a/vnc.c
+++ b/vnc.c
@@ -321,35 +321,6 @@ void do_info_vnc_print(Monitor *mon, const QObject *data)
     }
 }
 
-/**
- * do_info_vnc(): Show VNC server information
- *
- * Return a QDict with server information. Connected clients are returned
- * as a QList of QDicts.
- *
- * The main QDict contains the following:
- *
- * - "enabled": true or false
- * - "host": server's IP address
- * - "family": address family ("ipv4" or "ipv6")
- * - "service": server's port number
- * - "auth": authentication method
- * - "clients": a QList of all connected clients
- *
- * Clients are described by a QDict, with the following information:
- *
- * - "host": client's IP address
- * - "family": address family ("ipv4" or "ipv6")
- * - "service": client's port number
- * - "x509_dname": TLS dname (optional)
- * - "sasl_username": SASL username (optional)
- *
- * Example:
- *
- * { "enabled": true, "host": "0.0.0.0", "service": "50402", "auth": "vnc",
- *   "family": "ipv4",
- *   "clients": [{ "host": "127.0.0.1", "service": "50401", "family": "ipv4" }]}
- */
 void do_info_vnc(Monitor *mon, QObject **ret_data)
 {
     if (vnc_display == NULL || vnc_display->display == NULL) {
-- 
1.7.1.rc1.12.ga6018

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [Qemu-devel] [PATCH 0/2] QMP: Commands doc
  2010-04-30 17:03 [Qemu-devel] [PATCH 0/2] QMP: Commands doc Luiz Capitulino
  2010-04-30 17:03 ` [Qemu-devel] [PATCH 1/2] QMP: Introduce commands doc Luiz Capitulino
  2010-04-30 17:03 ` [Qemu-devel] [PATCH 2/2] Monitor: Drop QMP documentation from code Luiz Capitulino
@ 2010-04-30 17:30 ` Kevin Wolf
  2010-04-30 18:15   ` Luiz Capitulino
  2 siblings, 1 reply; 8+ messages in thread
From: Kevin Wolf @ 2010-04-30 17:30 UTC (permalink / raw)
  To: Luiz Capitulino; +Cc: bazulay, juzhang, qemu-devel, armbru

Am 30.04.2010 19:03, schrieb Luiz Capitulino:
> Details in the patches.

This conflicts with the high watermark patch which changes the
query-blockstats description. Can I convince you to rebase on top of it?
(If you prefer some git tree, you can use
git://repo.or.cz/qemu/kevin.git block)

Kevin

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Qemu-devel] [PATCH 0/2] QMP: Commands doc
  2010-04-30 17:30 ` [Qemu-devel] [PATCH 0/2] QMP: Commands doc Kevin Wolf
@ 2010-04-30 18:15   ` Luiz Capitulino
  2010-04-30 18:57     ` Luiz Capitulino
  0 siblings, 1 reply; 8+ messages in thread
From: Luiz Capitulino @ 2010-04-30 18:15 UTC (permalink / raw)
  To: Kevin Wolf; +Cc: bazulay, juzhang, qemu-devel, armbru

On Fri, 30 Apr 2010 19:30:36 +0200
Kevin Wolf <kwolf@redhat.com> wrote:

> Am 30.04.2010 19:03, schrieb Luiz Capitulino:
> > Details in the patches.
> 
> This conflicts with the high watermark patch which changes the
> query-blockstats description. Can I convince you to rebase on top of it?

 Sure, but I don't mind sending an incremental patch later.

> (If you prefer some git tree, you can use
> git://repo.or.cz/qemu/kevin.git block)
> 
> Kevin
> 

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Qemu-devel] [PATCH 0/2] QMP: Commands doc
  2010-04-30 18:15   ` Luiz Capitulino
@ 2010-04-30 18:57     ` Luiz Capitulino
  0 siblings, 0 replies; 8+ messages in thread
From: Luiz Capitulino @ 2010-04-30 18:57 UTC (permalink / raw)
  To: Kevin Wolf; +Cc: bazulay, juzhang, qemu-devel, armbru

On Fri, 30 Apr 2010 15:15:50 -0300
Luiz Capitulino <lcapitulino@redhat.com> wrote:

> On Fri, 30 Apr 2010 19:30:36 +0200
> Kevin Wolf <kwolf@redhat.com> wrote:
> 
> > Am 30.04.2010 19:03, schrieb Luiz Capitulino:
> > > Details in the patches.
> > 
> > This conflicts with the high watermark patch which changes the
> > query-blockstats description. Can I convince you to rebase on top of it?
> 
>  Sure, but I don't mind sending an incremental patch later.

 Ah, there's a _patch_ conflict (I thought it were only documentation),
will send a v2 on top of your patches.

> 
> > (If you prefer some git tree, you can use
> > git://repo.or.cz/qemu/kevin.git block)
> > 
> > Kevin
> > 

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Qemu-devel] [PATCH 1/2] QMP: Introduce commands doc
  2010-04-30 17:03 ` [Qemu-devel] [PATCH 1/2] QMP: Introduce commands doc Luiz Capitulino
@ 2010-05-03 16:24   ` Markus Armbruster
  2010-05-04 21:58     ` Luiz Capitulino
  0 siblings, 1 reply; 8+ messages in thread
From: Markus Armbruster @ 2010-05-03 16:24 UTC (permalink / raw)
  To: Luiz Capitulino; +Cc: bazulay, juzhang, qemu-devel

Luiz Capitulino <lcapitulino@redhat.com> writes:

> One of the most important missing feature in QMP today is its
> supported command documentation.
>
> The plan is to make it part of self-description support, however
> self-description is a big task we have been postponing for a
> long time now and still don't know when it's going to be done.
>
> In order not to compromise QMP adoption and make users' life easier,
> this commit adds a simple text documentation which fully describes
> all QMP supported commands.
>
> This is not ideal for a number of reasons (harder to maintain,
> text-only, etc) but is a lot better than the current situation.
>
> Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
> ---
>  QMP/qmp-commands.txt |  859 ++++++++++++++++++++++++++++++++++++++++++++++++++
>  1 files changed, 859 insertions(+), 0 deletions(-)
>  create mode 100644 QMP/qmp-commands.txt
>
> diff --git a/QMP/qmp-commands.txt b/QMP/qmp-commands.txt
> new file mode 100644
> index 0000000..2f9c448
> --- /dev/null
> +++ b/QMP/qmp-commands.txt
> @@ -0,0 +1,859 @@
> +                        QMP Supported Commands
> +                        ----------------------
> +
> +This document describes all commands currently supported by QMP.
> +
> +Most of the time their usage is exactly the same as in the user Monitor,
> +this means that any other document which also describe commands (the manpage,
> +QEMU's manual, etc) can and should be consulted.
> +
> +QMP has two types of commands: regular and query commands. Regular commands
> +usually change the Virtual Machine's state someway, while query commands just
> +return information. The sections below are divided accordingly.
> +
> +It's also important to observe that the 'example' subsection is different
> +for regular and query commands. For the former, a complete input line as it
> +should be issued by the Client is shown. For the latter, what is shown is
> +the complete Server response, whose members might be in different order when
> +in real protocol usage.
> +
> +Please, refert to the QMP specification (QMP/qmp-spec.txt file) for detailed
> +information on the Server command and response formats.
> +
> +NOTE: This document is temporary and will be replaced soon.
> +
> +1. Regular Commands
> +===================
> +
> +balloon
> +-------
> +
> +Request VM to change its memory allocation (in bytes).
> +
> +Arguments:
> +
> +- "value": New memory allocation (json-int)
> +
> +Example:
> +
> +{ "execute": "balloon", "arguments": { "value": 536870912 } }
> +
> +block_passwd
> +------------
> +
> +Set the password of encrypted block devices.
> +
> +Arguments:
> +
> +- "device": device name (json-string)
> +- "password": password (json-string)
> +
> +Example:
> +
> +{ "execute": "block_passwd", "arguments": { "device": "ide0-hd0",
> +                                            "password": "12345" } }
> +
> +change
> +------
> +
> +Change a removable medium or VNC configuration.
> +
> +Arguments:
> +
> +- "device": device name (json-string)
> +- "target": filename or item (json-string)
> +- "arg": additional argument (json-string, optional)
> +
> +Examples:
> +
> +{ "execute": "change",
> +             "arguments": { "device": "ide1-cd0",
> +                            "target": "/srv/images/Fedora-12-x86_64-DVD.iso" } }
> +
> +{ "execute": "change",
> +             "arguments": { "device": "vnc",
> +                            "target": "password",
> +                            "arg": "foobar1" } }
> +
> +closefd
> +-------
> +
> +Close a file descriptor previously passed via SCM rights.
> +
> +Arguments:
> +
> +- "fdname": file descriptor name (json-string)
> +
> +Example:
> +
> +{ "execute": "closefd", "arguments": { "name": "fd1" } }

Example argument is wrong ("name" instead of "fdname").

> +
> +cont
> +----
> +
> +Resume emulation.
> +
> +Arguments: None.
> +
> +Example:
> +
> +{ "execute": "cont" }
> +
> +cpu
> +---
> +
> +Set the default CPU.
> +
> +Arguments:
> +
> +- "index": the CPU's index (json-int)
> +
> +Example:
> +
> +{ "execute": "cpu", "arguments": { "index": 0 } }
> +
> +Note: CPUs' indexes are obtained with the 'query-cpus' command.
> +
> +device_add
> +----------
> +
> +Add a device.
> +
> +Arguments:
> +
> +- "driver": the name of the new device's driver (json-string)
> +- "bus": the device's parent bus (device tree path, json-string)

"bus" is optional (see your example below).

> +- "id": the device's ID, must be unique (json-string)
> +- device properties
> +
> +Example:
> +
> +{ "execute": "device_add", "arguments": { "driver": "e1000", "id": "net1" } }
> +
> +Note: For detailed information about this command, please refer to the
> +      'docs/qdev-device-use.txt' file.

What about pointing to "-device FOO,\?" here?  Lists device properties,
pretty crude, but better than nothing.

> +
> +device_del
> +----------
> +
> +Remove a device.
> +
> +Arguments:
> +
> +- "id": the device's ID (json-string)
> +
> +Example:
> +
> +{ "execute": "device_del", "arguments": { "id": "net1" } }
> +
> +eject
> +-----
> +
> +Eject a removable medium.
> +
> +Arguments: 
> +
> +- force: force ejection (json-bool, optional)
> +- device: device name (json-string)
> +
> +Example:
> +
> +{ "execute": "eject", "arguments": { "device": "ide1-cd0" } }
> +
> +Note: The "force" argument defaults to false.
> +
> +getfd
> +-----
> +
> +Receive a file descriptor via SCM rights and assign it a name.
> +
> +Arguments:
> +
> +- "fdname": file descriptor name (json-string)
> +
> +Example:
> +
> +{ "execute": "getfd", "arguments": { "name": "fd1" } }

Example argument is wrong ("name" instead of "fdname").

> +
> +memsave
> +-------
> +
> +Save to disk virtual memory dump starting at 'val' of size 'size'.
> +
> +Arguments:
> +
> +- "val": the starting address (json-int)
> +- "size": the memory size (json-int)
> +- "filename": file path (json-string)
> +
> +Example:
> +
> +{ "execute": "memsave",
> +             "arguments": { "val": 10,
> +                            "size": 100,
> +                            "filename": "/tmp/virtual-mem-dump" } }
> +
> +migrate
> +-------
> +
> +Migrate to URI.
> +
> +Arguments:
> +
> +- "blk": block migration, full disk copy (json-bool, optional)
> +- "inc": incremental disk copy (json-bool, optional)
> +- "uri": Destination URI (json-string, optional)

I don't think "uri" is optional.

> +
> +Example:
> +
> +{ "execute": "migrate", "arguments": { "uri": "tcp:0:4446" } }
> +
> +Notes:
> +
> +(1) The 'query-migrate' command should be used to check migration's progress
> +    and final result (this information is provided by the 'status' member)
> +(2) All boolean arguments default to false

Don't they always default to false?

> +(3) The user Monitor's "detach" argument is invalid in QMP and should not
> +    be used

Then why do we accept it?

> +
> +migrate_cancel
> +--------------
> +
> +Cancel the current migration.
> +
> +Arguments: None.
> +
> +Example:
> +
> +{ "execute": "migrate_cancel" }
> +
> +migrate_set_downtime
> +--------------------
> +
> +Set maximum tolerated downtime (in seconds) for migrations.
> +
> +Arguments:
> +
> +- "value": maximum downtime (json-number)
> +
> +Example:
> +
> +{ "execute": "migrate_set_downtime", "arguments": { "value": 60 } }
> +
> +migrate_set_speed
> +-----------------
> +
> +Set maximum speed (in bytes) for migrations.

"bytes" is not a unit of speed.  Same problem in qemu-monitor.hx.  If
it's good enough there...

> +
> +Arguments:
> +
> +- "value": maximum speed (json-number)
> +
> +Example:
> +
> +{ "execute": "migrate_set_speed", "arguments": { "value": 1024 } }
> +
> +netdev_add
> +----------
> +
> +Add host network device.
> +
> +Arguments:
> +
> +- "type": the device type, "tap", "user", ... (json-string)
> +- "id": the device's ID, must be unique (json-string)
> +- device options

What about a pointer to device option documentation here?

> +
> +Example:
> +
> +{ "execute": "netdev_add", "arguments": { "type": "user", "id": "netdev1" } }
> +
> +netdev_del
> +----------
> +
> +Remove host network device.
> +
> +Arguments:
> +
> +- "id": the device's ID, must be unique (json-string)
> +
> +Example:
> +
> +{ "execute": "netdev_del", "arguments": { "id": "netdev1" } }
> +
> +pmemsave
> +--------
> +
> +Save to disk physical memory dump starting at 'val' of size 'size'.
> +
> +Arguments:
> +
> +- "val": the starting address (json-int)
> +- "size": the memory size (json-int)
> +- "filename": file path (json-string)
> +
> +Example:
> +
> +{ "execute": "pmemsave",
> +             "arguments": { "val": 10,
> +                            "size": 100,
> +                            "filename": "/tmp/physical-mem-dump" } }
> +
> +qmp_capabilities
> +----------------
> +
> +Enable QMP capabilities.
> +
> +Arguments: None.
> +
> +Note: This command must be issued before issuing any other command.
> +
> +quit
> +----
> +
> +Quit the emulator.
> +
> +Arguments: None.
> +
> +Example:
> +
> +{ "execute": "quit" }
> +
> +screendump
> +----------
> +
> +Save screen into PPM image.
> +
> +Arguments:
> +
> +- "filename": file path (json-string)
> +
> +Example:
> +
> +{ "execute": "screendump", "arguments": { "filename": "/tmp/image" } }
> +
> +set_link
> +--------
> +
> +Change the link status of a network adapter.
> +
> +Arguments:
> +
> +- "name": network device name (json-string)
> +- "up": status is up (json-bool)
> +
> +Example:
> +
> +{ "execute": "set_link", "arguments": { "name": "e1000.0", "up": false } }
> +
> +stop
> +----
> +
> +Stop the emulator.
> +
> +Arguments: None.
> +
> +Example:
> +
> +{ "execute": "stop" }
> +
> +system_powerdown
> +----------------
> +
> +Send system power down event.
> +
> +Arguments: None.
> +
> +Example:
> +
> +{ "execute": "system_powerdown" }
> +
> +system_reset
> +------------
> +
> +Reset the system.
> +
> +Arguments: None.
> +
> +Example:
> +
> +{ "execute": "system_reset" }
[...]

I'll review the rest later.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [Qemu-devel] [PATCH 1/2] QMP: Introduce commands doc
  2010-05-03 16:24   ` Markus Armbruster
@ 2010-05-04 21:58     ` Luiz Capitulino
  0 siblings, 0 replies; 8+ messages in thread
From: Luiz Capitulino @ 2010-05-04 21:58 UTC (permalink / raw)
  To: Markus Armbruster; +Cc: bazulay, juzhang, qemu-devel

On Mon, 03 May 2010 18:24:11 +0200
Markus Armbruster <armbru@redhat.com> wrote:

> > +
> > +Example:
> > +
> > +{ "execute": "migrate", "arguments": { "uri": "tcp:0:4446" } }
> > +
> > +Notes:
> > +
> > +(1) The 'query-migrate' command should be used to check migration's progress
> > +    and final result (this information is provided by the 'status' member)
> > +(2) All boolean arguments default to false
> 
> Don't they always default to false?

 Yes, but I'm not sure if we should make this such a general rule, maybe
it should be possible to say what the default is. And we can do that for
new commands if we want to.

> > +(3) The user Monitor's "detach" argument is invalid in QMP and should not
> > +    be used
> 
> Then why do we accept it?

 It's a bug, nevertheless I think it's worth noting it's not accepted.

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2010-05-04 21:58 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-04-30 17:03 [Qemu-devel] [PATCH 0/2] QMP: Commands doc Luiz Capitulino
2010-04-30 17:03 ` [Qemu-devel] [PATCH 1/2] QMP: Introduce commands doc Luiz Capitulino
2010-05-03 16:24   ` Markus Armbruster
2010-05-04 21:58     ` Luiz Capitulino
2010-04-30 17:03 ` [Qemu-devel] [PATCH 2/2] Monitor: Drop QMP documentation from code Luiz Capitulino
2010-04-30 17:30 ` [Qemu-devel] [PATCH 0/2] QMP: Commands doc Kevin Wolf
2010-04-30 18:15   ` Luiz Capitulino
2010-04-30 18:57     ` Luiz Capitulino

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.