All of lore.kernel.org
 help / color / mirror / Atom feed
From: Amos Kong <akong@redhat.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: qemu-devel@nongnu.org, lcapitulino@redhat.com, jyang@redhat.com,
	pbonzini@redhat.com, libvirt-list@redhat.com
Subject: Re: [Qemu-devel] [PATCH v4 2/2] query-command-line-options: query all the options in qemu-options.hx
Date: Thu, 20 Mar 2014 22:51:05 +0800	[thread overview]
Message-ID: <20140320145105.GD2693@amosk.info> (raw)
In-Reply-To: <20140320140312.GA24041@amosk.info>

On Thu, Mar 20, 2014 at 10:03:12PM +0800, Amos Kong wrote:
> On Fri, Mar 07, 2014 at 10:54:09AM +0100, Markus Armbruster wrote:
> > Eric Blake <eblake@redhat.com> writes:
> > 
> > > On 03/05/2014 07:36 PM, Amos Kong wrote:
> > >> vm_config_groups[] only contains part of the options which have
> > >> argument, and all options which have no argument aren't added
> > >> to vm_config_groups[]. Current query-command-line-options only
> > >> checks options from vm_config_groups[], so some options will
> > >> be lost.
> > >> 
> > >> We have macro in qemu-options.hx to generate a table that
> > >> contains all the options. This patch tries to query options
> > >> from the table.
> > >> 
> > >> Then we won't lose the legacy options that weren't added to
> > >> vm_config_groups[] (eg: -vnc, -smbios). The options that have
> > >> no argument will also be returned (eg: -enable-fips)
> > >> 
> > >> Some options that have argument have a NULL desc list, some
> > >> options don't have argument, and "parameters" is mandatory
> > >> in the past. So we add a new field "argument" to present
> > >> if the option takes unspecified arguments.
> > >
> > > I like Markus' suggestion of naming the new field
> > > 'unspecified-parameters' rather than 'argument'.
>  
> Hi Markus,
> 
> > Looking again, there are more problems.
> > 
> > 1. Non-parameter argument vs. parameter argument taking unspecified
> >    parameters
> > 
> >    Example: -device takes unspecified parameters.  -cdrom doesn't take
> >    parameters, it takes a file name.  Yet, the command reports the same
> >    for both: "parameters": [], "argument": true.
> > 
> >    Looks like we need a tri-state: option takes no argument, QemuOpts
> >    argument, or other argument.
> 
> '-cdrom' is the 'other argument' == 'Non-parameter argument'?
> 
> We can use a enum state.
> 
> |  { 'enum': 'ArgumentStateType',
> |    'data': ['no-argument', 'unspecified-parameters-argument',
> |             'non-parameter-argument']
> |  }
> |  
> |  { 'type': 'CommandLineOptionInfo',
> |    'data': { 'option': 'str', 'parameters': ['CommandLineParameterInfo'],
> |              '*argument-state': 'ArgumentStateType' } }

> >    parameters is [] unless it's a QemuOpts argument.  Then it lists the
> >    recognized parameters.
> 
> How about balloon? we should treat as 'taking unspecified parameters'?
> 
>     "-balloon none   disable balloon device\n"
>     "-balloon virtio[,addr=str]\n"

I think we should treat as 'unspecified parameters'
 
> I think we can only check this from help message in qemu-options.hx,
> is it a stable/acceptable method?
> 
> We introduce query-command-line-options command to avoid libvirt to
> check qemu commandline information by scanning qemu's help message,
> it's not strict & stable.


[not a completed patch] 

diff --git a/qemu-options.h b/qemu-options.h
index 4024487..b08a6dc 100644
--- a/qemu-options.h
+++ b/qemu-options.h
@@ -41,6 +41,7 @@ typedef struct QEMUOption {
     const char *name;
     int flags;
     int index;
+    const char *help;
     uint32_t arch_mask;
 } QEMUOption;
 
diff --git a/util/qemu-config.c b/util/qemu-config.c
index 5bc3c31..e7758e3 100644
--- a/util/qemu-config.c
+++ b/util/qemu-config.c
@@ -9,7 +9,8 @@
 #include "qemu-options.h"
 
 const QEMUOption qemu_options[] = {
-    { "h", 0, QEMU_OPTION_h, QEMU_ARCH_ALL },
+    { "h", 0, QEMU_OPTION_h, "-h or -help     display this help and exit\n",
+      QEMU_ARCH_ALL },
 #define QEMU_OPTIONS_GENERATE_OPTIONS
 #include "qemu-options-wrapper.h"
     { NULL },
@@ -147,6 +148,7 @@ CommandLineOptionInfoList *qmp_query_command_line_options(bool has_
     CommandLineOptionInfo *info;
     QemuOptsList *list;
     int i;
+    const char *p;
 
     for (i = 0; qemu_options[i].name; i++) {
         if (!has_option || !strcmp(option, qemu_options[i].name)) {
@@ -161,8 +163,23 @@ CommandLineOptionInfoList *qmp_query_command_line_options(bool has
             }
 
             if (!info->parameters) {
-                info->has_unspecified_parameters = true;
-                info->unspecified_parameters = qemu_options[i].flags & HAS_ARG;
+                info->has_argument_state = true;
+
+                if (!qemu_options[i].flags & HAS_ARG) {
+                    info->argument_state = ARGUMENT_STATE_TYPE_NO_ARGUMENT;
+                } else {
+                    info->argument_state =
+                        ARGUMENT_STATE_TYPE_NO_PARAMETER_ARGUMENT;
+                }
+
+               p = qemu_options[i].help;
+                while (*p) {
+                    if (*p != ' ' && *(p + 1) == '[') {

                              ^^^^^
I know the string matching in while loop is too crude ;-) we can make it strict.

+                        info->argument_state =
+                            ARGUMENT_STATE_TYPE_UNSPECIFIED_PARAMETERS_ARGUMENT;
+                    }
+                    p += 1;
+                }
             }
 
             entry = g_malloc0(sizeof(*entry));



===================== query command output ============

{
    "return": [
        {
            "parameters": [
                {
                    "name": "timestamp", 
                    "type": "boolean"
                }
            ], 
            "option": "msg"
        }, 
        {
            "parameters": [
            ], 
            "option": "object", 
            "argument-state": "unspecified-parameters-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "tdf", 
            "argument-state": "no-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "no-kvm-irqchip", 
            "argument-state": "no-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "no-kvm-pit", 
            "argument-state": "no-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "no-kvm-pit-reinjection", 
            "argument-state": "no-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "no-kvm", 
            "argument-state": "no-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "enable-fips", 
            "argument-state": "no-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "qtest-log", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "qtest", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
                {
                    "name": "file", 
                    "type": "string"
                }, 
                {
                    "name": "events", 
                    "type": "string"
                }
            ], 
            "option": "trace"
        }, 
        {
            "parameters": [
            ], 
            "option": "no-user-config", 
            "argument-state": "no-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "nodefconfig", 
            "argument-state": "no-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "writeconfig", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "readconfig", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
                {
                    "name": "enable", 
                    "type": "boolean"
                }
            ], 
            "option": "sandbox"
        }, 
        {
            "parameters": [
            ], 
            "option": "old-param", 
            "argument-state": "no-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "semihosting", 
            "argument-state": "no-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "prom-env", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "runas", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "chroot", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "nodefaults", 
            "argument-state": "no-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "incoming", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "tb-size", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "show-cursor", 
            "argument-state": "no-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "virtioconsole", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "echr", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "watchdog-action", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "watchdog", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "icount", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
                {
                    "name": "driftfix", 
                    "type": "string"
                }, 
                {
                    "name": "clock", 
                    "type": "string"
                }, 
                {
                    "name": "base", 
                    "type": "string"
                }
            ], 
            "option": "rtc"
        }, 
        {
            "parameters": [
            ], 
            "option": "startdate", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "localtime", 
            "argument-state": "no-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "clock", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
                {
                    "name": "romfile", 
                    "type": "string"
                }, 
                {
                    "name": "bootindex", 
                    "type": "number"
                }
            ], 
            "option": "option-rom"
        }, 
        {
            "parameters": [
            ], 
            "option": "daemonize", 
            "argument-state": "no-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "loadvm", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "no-shutdown", 
            "argument-state": "no-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "no-reboot", 
            "argument-state": "no-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "xen-attach", 
            "argument-state": "no-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "xen-create", 
            "argument-state": "no-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "xen-domid", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "enable-kvm", 
            "argument-state": "no-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "bios", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "L", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "D", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "d", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "s", 
            "argument-state": "no-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "gdb", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
                {
                    "name": "mlock", 
                    "type": "boolean"
                }
            ], 
            "option": "realtime"
        }, 
        {
            "parameters": [
            ], 
            "option": "S", 
            "argument-state": "no-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "singlestep", 
            "argument-state": "no-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "pidfile", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "debugcon", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
                {
                    "name": "pretty", 
                    "type": "boolean"
                }, 
                {
                    "name": "default", 
                    "type": "boolean"
                }, 
                {
                    "name": "chardev", 
                    "type": "string"
                }, 
                {
                    "name": "mode", 
                    "type": "string"
                }
            ], 
            "option": "mon"
        }, 
        {
            "parameters": [
            ], 
            "option": "qmp", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "monitor", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "parallel", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "serial", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "dtb", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "initrd", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "append", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "kernel", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "bt", 
            "argument-state": "unspecified-parameters-argument"
        }, 
        {
            "parameters": [
                {
                    "name": "initiator-name", 
                    "help": "Initiator iqn name to use when connecting", 
                    "type": "string"
                }, 
                {
                    "name": "header-digest", 
                    "help": "HeaderDigest setting. {CRC32C|CRC32C-NONE|NONE-CRC32C|NONE}", 
                    "type": "string"
                }, 
                {
                    "name": "password", 
                    "help": "password for CHAP authentication to target", 
                    "type": "string"
                }, 
                {
                    "name": "user", 
                    "help": "username for CHAP authentication to target", 
                    "type": "string"
                }
            ], 
            "option": "iscsi"
        }, 
        {
            "parameters": [
                {
                    "name": "chardev", 
                    "type": "string"
                }, 
                {
                    "name": "size", 
                    "type": "size"
                }, 
                {
                    "name": "debug", 
                    "type": "number"
                }, 
                {
                    "name": "name", 
                    "type": "string"
                }, 
                {
                    "name": "signal", 
                    "type": "boolean"
                }, 
                {
                    "name": "mux", 
                    "type": "boolean"
                }, 
                {
                    "name": "rows", 
                    "type": "number"
                }, 
                {
                    "name": "cols", 
                    "type": "number"
                }, 
                {
                    "name": "height", 
                    "type": "number"
                }, 
                {
                    "name": "width", 
                    "type": "number"
                }, 
                {
                    "name": "telnet", 
                    "type": "boolean"
                }, 
                {
                    "name": "delay", 
                    "type": "boolean"
                }, 
                {
                    "name": "server", 
                    "type": "boolean"
                }, 
                {
                    "name": "wait", 
                    "type": "boolean"
                }, 
                {
                    "name": "ipv6", 
                    "type": "boolean"
                }, 
                {
                    "name": "ipv4", 
                    "type": "boolean"
                }, 
                {
                    "name": "to", 
                    "type": "number"
                }, 
                {
                    "name": "localport", 
                    "type": "string"
                }, 
                {
                    "name": "localaddr", 
                    "type": "string"
                }, 
                {
                    "name": "port", 
                    "type": "string"
                }, 
                {
                    "name": "host", 
                    "type": "string"
                }, 
                {
                    "name": "path", 
                    "type": "string"
                }, 
                {
                    "name": "backend", 
                    "type": "string"
                }
            ], 
            "option": "chardev"
        }, 
        {
            "parameters": [
            ], 
            "option": "netdev", 
            "argument-state": "unspecified-parameters-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "net", 
            "argument-state": "unspecified-parameters-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "smb", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "redir", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "bootp", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "tftp", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "smbios", 
            "argument-state": "unspecified-parameters-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "acpitable", 
            "argument-state": "unspecified-parameters-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "no-hpet", 
            "argument-state": "no-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "no-acpi", 
            "argument-state": "no-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "no-fd-bootchk", 
            "argument-state": "no-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "rtc-td-hack", 
            "argument-state": "no-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "win2k-hack", 
            "argument-state": "no-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "vnc", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "g", 
            "argument-state": "unspecified-parameters-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "full-screen", 
            "argument-state": "no-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "vga", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "rotate", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "portrait", 
            "argument-state": "no-argument"
        }, 
        {
            "parameters": [
                {
                    "name": "seamless-migration", 
                    "type": "boolean"
                }, 
                {
                    "name": "playback-compression", 
                    "type": "boolean"
                }, 
                {
                    "name": "agent-mouse", 
                    "type": "boolean"
                }, 
                {
                    "name": "streaming-video", 
                    "type": "string"
                }, 
                {
                    "name": "zlib-glz-wan-compression", 
                    "type": "string"
                }, 
                {
                    "name": "jpeg-wan-compression", 
                    "type": "string"
                }, 
                {
                    "name": "image-compression", 
                    "type": "string"
                }, 
                {
                    "name": "plaintext-channel", 
                    "type": "string"
                }, 
                {
                    "name": "tls-channel", 
                    "type": "string"
                }, 
                {
                    "name": "tls-ciphers", 
                    "type": "string"
                }, 
                {
                    "name": "x509-dh-key-file", 
                    "type": "string"
                }, 
                {
                    "name": "x509-cacert-file", 
                    "type": "string"
                }, 
                {
                    "name": "x509-cert-file", 
                    "type": "string"
                }, 
                {
                    "name": "x509-key-password", 
                    "type": "string"
                }, 
                {
                    "name": "x509-key-file", 
                    "type": "string"
                }, 
                {
                    "name": "x509-dir", 
                    "type": "string"
                }, 
                {
                    "name": "sasl", 
                    "type": "boolean"
                }, 
                {
                    "name": "disable-agent-file-xfer", 
                    "type": "boolean"
                }, 
                {
                    "name": "disable-copy-paste", 
                    "type": "boolean"
                }, 
                {
                    "name": "disable-ticketing", 
                    "type": "boolean"
                }, 
                {
                    "name": "password", 
                    "type": "string"
                }, 
                {
                    "name": "ipv6", 
                    "type": "boolean"
                }, 
                {
                    "name": "ipv4", 
                    "type": "boolean"
                }, 
                {
                    "name": "addr", 
                    "type": "string"
                }, 
                {
                    "name": "tls-port", 
                    "type": "number"
                }, 
                {
                    "name": "port", 
                    "type": "number"
                }
            ], 
            "option": "spice"
        }, 
        {
            "parameters": [
            ], 
            "option": "sdl", 
            "argument-state": "no-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "no-quit", 
            "argument-state": "no-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "ctrl-grab", 
            "argument-state": "no-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "alt-grab", 
            "argument-state": "no-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "no-frame", 
            "argument-state": "no-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "curses", 
            "argument-state": "no-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "nographic", 
            "argument-state": "no-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "display", 
            "argument-state": "unspecified-parameters-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "usbdevice", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "usb", 
            "argument-state": "no-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "virtfs_synth", 
            "argument-state": "no-argument"
        }, 
        {
            "parameters": [
                {
                    "name": "sock_fd", 
                    "type": "number"
                }, 
                {
                    "name": "socket", 
                    "type": "string"
                }, 
                {
                    "name": "readonly", 
                    "type": "boolean"
                }, 
                {
                    "name": "writeout", 
                    "type": "string"
                }, 
                {
                    "name": "security_model", 
                    "type": "string"
                }, 
                {
                    "name": "mount_tag", 
                    "type": "string"
                }, 
                {
                    "name": "path", 
                    "type": "string"
                }, 
                {
                    "name": "fsdriver", 
                    "type": "string"
                }
            ], 
            "option": "virtfs"
        }, 
        {
            "parameters": [
                {
                    "name": "sock_fd", 
                    "type": "number"
                }, 
                {
                    "name": "socket", 
                    "type": "string"
                }, 
                {
                    "name": "readonly", 
                    "type": "boolean"
                }, 
                {
                    "name": "writeout", 
                    "type": "string"
                }, 
                {
                    "name": "security_model", 
                    "type": "string"
                }, 
                {
                    "name": "path", 
                    "type": "string"
                }, 
                {
                    "name": "fsdriver", 
                    "type": "string"
                }
            ], 
            "option": "fsdev"
        }, 
        {
            "parameters": [
            ], 
            "option": "hdachs", 
            "argument-state": "unspecified-parameters-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "snapshot", 
            "argument-state": "no-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "pflash", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "sd", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "mtdblock", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
                {
                    "name": "copy-on-read", 
                    "help": "copy read data from backing file into image file", 
                    "type": "boolean"
                }, 
                {
                    "name": "werror", 
                    "help": "write error action", 
                    "type": "string"
                }, 
                {
                    "name": "rerror", 
                    "help": "read error action", 
                    "type": "string"
                }, 
                {
                    "name": "read-only", 
                    "help": "open drive file as read-only", 
                    "type": "boolean"
                }, 
                {
                    "name": "file", 
                    "help": "file name", 
                    "type": "string"
                }, 
                {
                    "name": "addr", 
                    "help": "pci address (virtio only)", 
                    "type": "string"
                }, 
                {
                    "name": "boot", 
                    "help": "(deprecated, ignored)", 
                    "type": "boolean"
                }, 
                {
                    "name": "trans", 
                    "help": "chs translation (auto, lba, none)", 
                    "type": "string"
                }, 
                {
                    "name": "secs", 
                    "help": "number of sectors (ide disk geometry)", 
                    "type": "number"
                }, 
                {
                    "name": "heads", 
                    "help": "number of heads (ide disk geometry)", 
                    "type": "number"
                }, 
                {
                    "name": "cyls", 
                    "help": "number of cylinders (ide disk geometry)", 
                    "type": "number"
                }, 
                {
                    "name": "if", 
                    "help": "interface (ide, scsi, sd, mtd, floppy, pflash, virtio)", 
                    "type": "string"
                }, 
                {
                    "name": "media", 
                    "help": "media type (disk, cdrom)", 
                    "type": "string"
                }, 
                {
                    "name": "index", 
                    "help": "index number", 
                    "type": "number"
                }, 
                {
                    "name": "unit", 
                    "help": "unit number (i.e. lun for scsi)", 
                    "type": "number"
                }, 
                {
                    "name": "bus", 
                    "help": "bus number", 
                    "type": "number"
                }, 
                {
                    "name": "throttling.iops-size", 
                    "help": "when limiting by iops max size of an I/O in bytes", 
                    "type": "number"
                }, 
                {
                    "name": "throttling.bps-write-max", 
                    "help": "total bytes write burst", 
                    "type": "number"
                }, 
                {
                    "name": "throttling.bps-read-max", 
                    "help": "total bytes read burst", 
                    "type": "number"
                }, 
                {
                    "name": "throttling.bps-total-max", 
                    "help": "total bytes burst", 
                    "type": "number"
                }, 
                {
                    "name": "throttling.iops-write-max", 
                    "help": "I/O operations write burst", 
                    "type": "number"
                }, 
                {
                    "name": "throttling.iops-read-max", 
                    "help": "I/O operations read burst", 
                    "type": "number"
                }, 
                {
                    "name": "throttling.iops-total-max", 
                    "help": "I/O operations burst", 
                    "type": "number"
                }, 
                {
                    "name": "throttling.bps-write", 
                    "help": "limit write bytes per second", 
                    "type": "number"
                }, 
                {
                    "name": "throttling.bps-read", 
                    "help": "limit read bytes per second", 
                    "type": "number"
                }, 
                {
                    "name": "throttling.bps-total", 
                    "help": "limit total bytes per second", 
                    "type": "number"
                }, 
                {
                    "name": "throttling.iops-write", 
                    "help": "limit write operations per second", 
                    "type": "number"
                }, 
                {
                    "name": "throttling.iops-read", 
                    "help": "limit read operations per second", 
                    "type": "number"
                }, 
                {
                    "name": "throttling.iops-total", 
                    "help": "limit total I/O operations per second", 
                    "type": "number"
                }, 
                {
                    "name": "werror", 
                    "help": "write error action", 
                    "type": "string"
                }, 
                {
                    "name": "serial", 
                    "help": "disk serial number", 
                    "type": "string"
                }, 
                {
                    "name": "format", 
                    "help": "disk format (raw, qcow2, ...)", 
                    "type": "string"
                }, 
                {
                    "name": "aio", 
                    "help": "host AIO implementation (threads, native)", 
                    "type": "string"
                }, 
                {
                    "name": "cache.no-flush", 
                    "help": "ignore any flush requests for the device", 
                    "type": "boolean"
                }, 
                {
                    "name": "cache.direct", 
                    "help": "enables use of O_DIRECT (bypass the host page cache)", 
                    "type": "boolean"
                }, 
                {
                    "name": "cache.writeback", 
                    "help": "enables writeback mode for any caches", 
                    "type": "boolean"
                }, 
                {
                    "name": "discard", 
                    "help": "discard operation (ignore/off, unmap/on)", 
                    "type": "string"
                }, 
                {
                    "name": "snapshot", 
                    "help": "enable/disable snapshot mode", 
                    "type": "boolean"
                }
            ], 
            "option": "drive"
        }, 
        {
            "parameters": [
            ], 
            "option": "cdrom", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "hdd", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "hdc", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "hdb", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "hda", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "fdb", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "fda", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "uuid", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
                {
                    "name": "debug-threads", 
                    "help": "When enabled, name the individual threads; defaults off.\nNOTE: The thread names are for debugging and not a\nstable API.", 
                    "type": "boolean"
                }, 
                {
                    "name": "process", 
                    "help": "Sets the name of the QEMU process, as shown in top etc", 
                    "type": "string"
                }, 
                {
                    "name": "guest", 
                    "help": "Sets the name of the guest.\nThis name will be displayed in the SDL window caption.\nThe name will also be used for the VNC server", 
                    "type": "string"
                }
            ], 
            "option": "name"
        }, 
        {
            "parameters": [
            ], 
            "option": "device", 
            "argument-state": "unspecified-parameters-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "balloon", 
            "argument-state": "unspecified-parameters-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "soundhw", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "audio-help", 
            "argument-state": "no-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "k", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "mem-prealloc", 
            "argument-state": "no-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "mem-path", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "m", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
                {
                    "name": "strict", 
                    "type": "boolean"
                }, 
                {
                    "name": "reboot-timeout", 
                    "type": "string"
                }, 
                {
                    "name": "splash-time", 
                    "type": "string"
                }, 
                {
                    "name": "splash", 
                    "type": "string"
                }, 
                {
                    "name": "menu", 
                    "type": "boolean"
                }, 
                {
                    "name": "once", 
                    "type": "string"
                }, 
                {
                    "name": "order", 
                    "type": "string"
                }
            ], 
            "option": "boot"
        }, 
        {
            "parameters": [
                {
                    "name": "value", 
                    "type": "string"
                }, 
                {
                    "name": "property", 
                    "type": "string"
                }, 
                {
                    "name": "driver", 
                    "type": "string"
                }
            ], 
            "option": "global"
        }, 
        {
            "parameters": [
            ], 
            "option": "set", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
                {
                    "name": "opaque", 
                    "help": "free-form string used to describe fd", 
                    "type": "string"
                }, 
                {
                    "name": "set", 
                    "help": "ID of the fd set to add fd to", 
                    "type": "number"
                }, 
                {
                    "name": "fd", 
                    "help": "file descriptor of which a duplicate is added to fd set", 
                    "type": "number"
                }
            ], 
            "option": "add-fd"
        }, 
        {
            "parameters": [
            ], 
            "option": "numa", 
            "argument-state": "unspecified-parameters-argument"
        }, 
        {
            "parameters": [
                {
                    "name": "maxcpus", 
                    "type": "number"
                }, 
                {
                    "name": "threads", 
                    "type": "number"
                }, 
                {
                    "name": "cores", 
                    "type": "number"
                }, 
                {
                    "name": "sockets", 
                    "type": "number"
                }, 
                {
                    "name": "cpus", 
                    "type": "number"
                }
            ], 
            "option": "smp"
        }, 
        {
            "parameters": [
            ], 
            "option": "cpu", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "M", 
            "argument-state": "no-parameter-argument"
        }, 
        {
            "parameters": [
                {
                    "name": "kvm-type", 
                    "help": "Specifies the KVM virtualization mode (HV, PR)", 
                    "type": "string"
                }, 
                {
                    "name": "firmware", 
                    "help": "firmware image", 
                    "type": "string"
                }, 
                {
                    "name": "usb", 
                    "help": "Set on/off to enable/disable usb", 
                    "type": "boolean"
                }, 
                {
                    "name": "mem-merge", 
                    "help": "enable/disable memory merge support", 
                    "type": "boolean"
                }, 
                {
                    "name": "dump-guest-core", 
                    "help": "Include guest memory in  a core dump", 
                    "type": "boolean"
                }, 
                {
                    "name": "dt_compatible", 
                    "help": "Overrides the \"compatible\" property of the dt root node", 
                    "type": "string"
                }, 
                {
                    "name": "phandle_start", 
                    "help": "The first phandle ID we may generate dynamically", 
                    "type": "number"
                }, 
                {
                    "name": "dumpdtb", 
                    "help": "Dump current dtb to a file and quit", 
                    "type": "string"
                }, 
                {
                    "name": "dtb", 
                    "help": "Linux kernel device tree file", 
                    "type": "string"
                }, 
                {
                    "name": "append", 
                    "help": "Linux kernel command line", 
                    "type": "string"
                }, 
                {
                    "name": "initrd", 
                    "help": "Linux initial ramdisk file", 
                    "type": "string"
                }, 
                {
                    "name": "kernel", 
                    "help": "Linux kernel image file", 
                    "type": "string"
                }, 
                {
                    "name": "kvm_shadow_mem", 
                    "help": "KVM shadow MMU size", 
                    "type": "size"
                }, 
                {
                    "name": "kernel_irqchip", 
                    "help": "use KVM in-kernel irqchip", 
                    "type": "boolean"
                }, 
                {
                    "name": "accel", 
                    "help": "accelerator list", 
                    "type": "string"
                }, 
                {
                    "name": "type", 
                    "help": "emulated machine", 
                    "type": "string"
                }
            ], 
            "option": "machine"
        }, 
        {
            "parameters": [
            ], 
            "option": "version", 
            "argument-state": "no-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "help", 
            "argument-state": "no-argument"
        }, 
        {
            "parameters": [
            ], 
            "option": "h", 
            "argument-state": "no-argument"
        }
    ]
}

  reply	other threads:[~2014-03-20 14:51 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-06  2:36 [Qemu-devel] [PATCH v4 0/2] fix query-command-line-options Amos Kong
2014-03-06  2:36 ` [Qemu-devel] [PATCH v4 1/2] qmp: rename query_option_descs() to get_param_infolist() Amos Kong
2014-03-06  2:36 ` [Qemu-devel] [PATCH v4 2/2] query-command-line-options: query all the options in qemu-options.hx Amos Kong
2014-03-06 10:50   ` Markus Armbruster
2014-03-06 21:23   ` Eric Blake
2014-03-07  6:09     ` Amos Kong
2014-03-07  9:54     ` Markus Armbruster
2014-03-10 17:41       ` Eric Blake
2014-03-11  9:04         ` Markus Armbruster
2014-03-11 14:46           ` Eric Blake
2014-03-20 14:12           ` Amos Kong
2014-03-27  5:09             ` Amos Kong
2014-03-20 14:03       ` Amos Kong
2014-03-20 14:51         ` Amos Kong [this message]
2014-03-26 13:15         ` Markus Armbruster
2014-03-27  5:04           ` Amos Kong
2014-03-27  9:46             ` Markus Armbruster
2014-03-07  9:56   ` Markus Armbruster

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140320145105.GD2693@amosk.info \
    --to=akong@redhat.com \
    --cc=armbru@redhat.com \
    --cc=jyang@redhat.com \
    --cc=lcapitulino@redhat.com \
    --cc=libvirt-list@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.