[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 5/6] qmp: Support abstract classes on device-list
From: |
Eduardo Habkost |
Subject: |
[Qemu-devel] [PATCH v2 5/6] qmp: Support abstract classes on device-list-properties |
Date: |
Thu, 20 Oct 2016 15:47:58 -0200 |
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 CPU
options that are supported by all CPU models, for example.
Signed-off-by: Eduardo Habkost <address@hidden>
---
qmp.c | 21 +++++++++------------
1 file changed, 9 insertions(+), 12 deletions(-)
diff --git a/qmp.c b/qmp.c
index b3ba9ef..dd6090d 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;
--
2.7.4
- [Qemu-devel] [PATCH v2 0/6] qdev class properties + abstract class support on device-list-properties, Eduardo Habkost, 2016/10/20
- [Qemu-devel] [PATCH v2 2/6] qdev: Extract property-default code to qdev_property_set_to_default(), Eduardo Habkost, 2016/10/20
- [Qemu-devel] [PATCH v2 3/6] qdev: Register static properties as class properties, Eduardo Habkost, 2016/10/20
- [Qemu-devel] [PATCH v2 4/6] qom: object_class_property_iter_init() function, Eduardo Habkost, 2016/10/20
- [Qemu-devel] [PATCH v2 5/6] qmp: Support abstract classes on device-list-properties,
Eduardo Habkost <=
- [Qemu-devel] [PATCH v2 6/6] qdev: Warning about using object_class_property_add() in new code, Eduardo Habkost, 2016/10/20
- [Qemu-devel] [PATCH v2 1/6] qdev: device_class_set_props() function, Eduardo Habkost, 2016/10/20
- Re: [Qemu-devel] [PATCH v2 0/6] qdev class properties + abstract class support on device-list-properties, no-reply, 2016/10/20