qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 5/5] qdev: Add new '-device help' option, shows


From: Markus Armbruster
Subject: Re: [Qemu-devel] [PATCH 5/5] qdev: Add new '-device help' option, shows all devices and properties
Date: Mon, 07 Jun 2010 16:43:05 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1 (gnu/linux)

I like PATCH 1-3/5, but this one needs discussion.

Amit Shah <address@hidden> writes:

> The new '-device help' option shows all the devices that are registered
> with qdev and prints out all the properties each device has, along with
> the description for each property.
>
> This is useful in creating automatic documentation for all the options
> that we have and support.
>
> Signed-off-by: Amit Shah <address@hidden>
> ---
>  hw/qdev.c |   15 +++++++++++----
>  1 files changed, 11 insertions(+), 4 deletions(-)

Documentation update missing: qemu-options.hx

> diff --git a/hw/qdev.c b/hw/qdev.c
> index 89ba986..4be2f66 100644
> --- a/hw/qdev.c
> +++ b/hw/qdev.c
> @@ -151,7 +151,7 @@ static int set_property(const char *name, const char 
> *value, void *opaque)
>      return 0;
>  }
>  
> -static int show_device_props(const char *driver)
> +static int show_device_props(const char *driver, const char *prefix)
>  {
>      DeviceInfo *info;
>      Property *prop;
> @@ -161,6 +161,10 @@ static int show_device_props(const char *driver)
>          return 0;
>      }
>  
> +    if (!prefix) {
> +        prefix = "";
> +    }
> +

Just make the caller pass "" instead of NULL.

>      for (prop = info->props; prop && prop->name; prop++) {
>          /*
>           * TODO Properties without a parser are just for dirty hacks.
> @@ -171,7 +175,7 @@ static int show_device_props(const char *driver)
>          if (!prop->info->parse) {
>              continue;           /* no way to set it, don't show */
>          }
> -        error_printf("%s.%s=%s, %s\n", info->name, prop->name,
> +        error_printf("%s%s.%s=%s, %s\n", prefix, info->name, prop->name,
>                       prop->info->name, prop->desc ?: "");
>      }
>      return 1;
> @@ -183,12 +187,15 @@ int qdev_device_help(QemuOpts *opts)
>      DeviceInfo *info;
>  
>      driver = qemu_opt_get(opts, "driver");
> -    if (driver && !strcmp(driver, "?")) {
> +    if (driver && (!strcmp(driver, "?") || !strcmp(driver, "help"))) {
>          for (info = device_info_list; info != NULL; info = info->next) {
>              if (info->no_user) {
>                  continue;       /* not available, don't show */
>              }
>              qdev_print_devinfo(info);
> +            if (!strcmp(driver, "help")) {
> +                show_device_props(info->name, "\t");
> +            }
>          }
>          return 1;
>      }

There is "-device \?" and "-device help", but the user interface
provides no clue about the difference between them.

"-device help" loses when we ever pick up a device model with name
"help".  Not that "?" was a particularly smart choice...

Do we really need two kinds of help output?  Where the second is
basically the same as "-device FOO,\?" for all FOO?  Is that convenience
worth the extra UI complexity?

Doing it in the shell isn't exactly hard:

$ for i in `qemu -device \? 2>&1 | awk -F \" '{ print $2 }'`; do qemu -device 
$i,\?; done

> @@ -197,7 +204,7 @@ int qdev_device_help(QemuOpts *opts)
>          return 0;
>      }
>  
> -    return show_device_props(driver);
> +    return show_device_props(driver, NULL);
>  }
>  
>  DeviceState *qdev_device_add(QemuOpts *opts)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]