[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v4 7/8] qmp: Support abstract classes on device-
From: |
Igor Mammedov |
Subject: |
Re: [Qemu-devel] [PATCH v4 7/8] qmp: Support abstract classes on device-list-properties |
Date: |
Mon, 31 Oct 2016 15:07:23 +0100 |
On Fri, 28 Oct 2016 23:48:06 -0200
Eduardo Habkost <address@hidden> wrote:
> When an abstract class is used on device-list-properties, we can
> simply return the class properties registered for the class.
>
> This will be useful if management software needs to query for
> supported options that apply to all devices of a given type (e.g.
> options supported by all CPU models, options supported by all PCI
> devices).
Patch looks fine to me but I'm not qmp interface guru
so I'd leave review up to maintainers.
One question though,
How would management software discover typename of abstract class?
Perhaps this patch should be part of some other series.
> Signed-off-by: Eduardo Habkost <address@hidden>
> ---
> Changes series v1 -> v2:
> * (none)
>
> Changes series v2 -> v3:
> * Reworded commit message
>
> Changes series v3 -> v4:
> * (none)
> ---
> qmp.c | 21 +++++++++------------
> 1 file changed, 9 insertions(+), 12 deletions(-)
>
> diff --git a/qmp.c b/qmp.c
> index a06cb7b..1e7e60d 100644
> --- a/qmp.c
> +++ b/qmp.c
> @@ -518,7 +518,7 @@ DevicePropertyInfoList *qmp_device_list_properties(const
> char *typename,
> Error **errp)
> {
> ObjectClass *klass;
> - Object *obj;
> + Object *obj = NULL;
> ObjectProperty *prop;
> ObjectPropertyIterator iter;
> DevicePropertyInfoList *prop_list = NULL;
> @@ -537,19 +537,16 @@ DevicePropertyInfoList
> *qmp_device_list_properties(const char *typename,
> }
>
> if (object_class_is_abstract(klass)) {
> - error_setg(errp, QERR_INVALID_PARAMETER_VALUE, "name",
> - "non-abstract device type");
> - return NULL;
> - }
> -
> - if (DEVICE_CLASS(klass)->cannot_destroy_with_object_finalize_yet) {
> - error_setg(errp, "Can't list properties of device '%s'", typename);
> - return NULL;
> + object_class_property_iter_init(&iter, klass);
> + } else {
> + if (DEVICE_CLASS(klass)->cannot_destroy_with_object_finalize_yet) {
> + error_setg(errp, "Can't list properties of device '%s'",
> typename);
> + return NULL;
> + }
> + obj = object_new(typename);
> + object_property_iter_init(&iter, obj);
> }
>
> - obj = object_new(typename);
> -
> - object_property_iter_init(&iter, obj);
> while ((prop = object_property_iter_next(&iter))) {
> DevicePropertyInfo *info;
> DevicePropertyInfoList *entry;
- [Qemu-devel] [PATCH v4 0/8] qdev class properties + abstract class support on device-list-properties, Eduardo Habkost, 2016/10/28
- [Qemu-devel] [PATCH v4 1/8] tests: check-qom-proplist: Remove duplicate "bv" property, Eduardo Habkost, 2016/10/28
- [Qemu-devel] [PATCH v4 2/8] tests: check-qom-proplist: Use &error_abort to catch errors, Eduardo Habkost, 2016/10/28
- [Qemu-devel] [PATCH v4 4/8] qdev: Extract property-default code to qdev_property_set_to_default(), Eduardo Habkost, 2016/10/28
- [Qemu-devel] [PATCH v4 6/8] qom: object_class_property_iter_init() function, Eduardo Habkost, 2016/10/28
- [Qemu-devel] [PATCH v4 5/8] qdev: Register static properties as class properties, Eduardo Habkost, 2016/10/28
- [Qemu-devel] [PATCH v4 7/8] qmp: Support abstract classes on device-list-properties, Eduardo Habkost, 2016/10/28
- Re: [Qemu-devel] [PATCH v4 7/8] qmp: Support abstract classes on device-list-properties,
Igor Mammedov <=
- [Qemu-devel] [PATCH v4 8/8] qdev: Warning about using qdev_property_add_static() in new code, Eduardo Habkost, 2016/10/28
- [Qemu-devel] [PATCH v4 3/8] qdev: device_class_set_props() function, Eduardo Habkost, 2016/10/28