[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 01/20] qdev: add print_options callback
From: |
Alon Levy |
Subject: |
Re: [Qemu-devel] [PATCH 01/20] qdev: add print_options callback |
Date: |
Thu, 3 Feb 2011 22:54:26 +0200 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
On Thu, Feb 03, 2011 at 10:39:40AM -0600, Anthony Liguori wrote:
> On 02/02/2011 02:28 PM, Alon Levy wrote:
> >another callback added to PropertyInfo, for later use by PROP_TYPE_ENUM.
> >Allows printing of runtime computed options when doing:
> > qemu -device foo,?
> >---
> > hw/qdev.c | 10 +++++++++-
> > hw/qdev.h | 1 +
> > 2 files changed, 10 insertions(+), 1 deletions(-)
> >
> >diff --git a/hw/qdev.c b/hw/qdev.c
> >index c7fec44..0b2ad3d 100644
> >--- a/hw/qdev.c
> >+++ b/hw/qdev.c
> >@@ -187,7 +187,15 @@ int qdev_device_help(QemuOpts *opts)
> > if (!prop->info->parse) {
> > continue; /* no way to set it, don't show */
> > }
> >- error_printf("%s.%s=%s\n", info->name, prop->name,
> >prop->info->name);
> >+ if (prop->info->print_options) {
> >+ char buf[256];
> >+ int ret;
> >+ ret = prop->info->print_options(info, prop, buf, sizeof(buf) -
> >3);
> >+ error_printf("%s.%s=%s%s\n", info->name, prop->name, buf,
> >+ ret == sizeof(buf) - 3 ? "..." : "" );
> >+ } else {
> >+ error_printf("%s.%s=%s\n", info->name, prop->name,
> >prop->info->name);
> >+ }
> > }
> > return 1;
> > }
> >diff --git a/hw/qdev.h b/hw/qdev.h
> >index 9808f85..fa3221b 100644
> >--- a/hw/qdev.h
> >+++ b/hw/qdev.h
> >@@ -109,6 +109,7 @@ struct PropertyInfo {
> > enum PropertyType type;
> > int (*parse)(DeviceState *dev, Property *prop, const char *str);
> > int (*print)(DeviceState *dev, Property *prop, char *dest, size_t len);
> >+ int (*print_options)(DeviceInfo *info, Property *prop, char *dest,
> >size_t len);
>
> I'm not clear what the different between print and print_options is
> and why two callbacks are needed. Can you explain and comments to
There is a difference in usage - the existing print is called when we do info
during
execution, it shows the status of the device. print_options is given a
DeviceInfo
and not a DeviceState and responds with the list we print for a command line
invocation:
"qemu -device foo,? ", It is used to allow possible options that depend on
available
runtime libraries or other resources. It also allows relatively easy
implementation for
data that could be known at compile time, like names for enums, used by the
next patches.
> the patch clarifying why two interfaces are needed. Even better
> would be if one interface could handle it.
>
> Regards,
>
> Anthony Liguori
>
>
> > void (*free)(DeviceState *dev, Property *prop);
> > };
> >
>
- [Qemu-devel] [PATCH 00/20] usb-ccid (v16), Alon Levy, 2011/02/02
- [Qemu-devel] [PATCH 02/20] qdev: add data pointer to Property, Alon Levy, 2011/02/02
- [Qemu-devel] [PATCH 01/20] qdev: add print_options callback, Alon Levy, 2011/02/02
- [Qemu-devel] [PATCH 03/20] qdev-properties: add PROP_TYPE_ENUM, Alon Levy, 2011/02/02
- [Qemu-devel] [PATCH 04/20] qdev-properties: parse_enum: don't cast a void*, Alon Levy, 2011/02/02
- [Qemu-devel] [PATCH 07/20] introduce libcacard/vscard_common.h, Alon Levy, 2011/02/02
- [Qemu-devel] [PATCH 06/20] usb-ccid: review fixes (v15-v16), Alon Levy, 2011/02/02
- [Qemu-devel] [PATCH 05/20] usb-ccid: add CCID bus, Alon Levy, 2011/02/02