[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v4 7/8] qmp: Support abstract classes on device-list
From: |
Eduardo Habkost |
Subject: |
[Qemu-devel] [PATCH v4 7/8] qmp: Support abstract classes on device-list-properties |
Date: |
Fri, 28 Oct 2016 23:48:06 -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
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).
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;
--
2.7.4
- [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 <=
- [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