another callback added to PropertyInfo, for later use by PROP_TYPE_ENUM. Allows printing of runtime computed options when doing: qemu -device foo,?
Signed-off-by: Alon Levy <al...@redhat.com> --- 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); void (*free)(DeviceState *dev, Property *prop); }; -- 1.7.4