From: Eduardo Habkost <ehabkost@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Markus Armbruster" <armbru@redhat.com>,
"Andreas Färber" <afaerber@suse.de>,
"Daniel P. Berrange" <berrange@redhat.com>,
"Igor Mammedov" <imammedo@redhat.com>
Subject: [Qemu-devel] [PATCH v3 7/8] qmp: Support abstract classes on device-list-properties
Date: Wed, 26 Oct 2016 14:30:25 -0200 [thread overview]
Message-ID: <1477499426-9550-8-git-send-email-ehabkost@redhat.com> (raw)
In-Reply-To: <1477499426-9550-1-git-send-email-ehabkost@redhat.com>
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 <ehabkost@redhat.com>
---
Changes series v1 -> v2:
* (none)
Changes series v2 -> v3:
* Reworded commit message
---
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
next prev parent reply other threads:[~2016-10-26 16:31 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-26 16:30 [Qemu-devel] [PATCH v3 0/8] qdev class properties + abstract class support on device-list-properties Eduardo Habkost
2016-10-26 16:30 ` [Qemu-devel] [PATCH v3 1/8] tests: check-qom-proplist: Remove duplicate "bv" property Eduardo Habkost
2016-10-27 14:13 ` Igor Mammedov
2016-10-26 16:30 ` [Qemu-devel] [PATCH v3 2/8] tests: check-qom-proplist: Use &error_abort to catch errors Eduardo Habkost
2016-10-27 14:16 ` Igor Mammedov
2016-10-26 16:30 ` [Qemu-devel] [PATCH v3 3/8] qdev: device_class_set_props() function Eduardo Habkost
2016-10-26 16:30 ` [Qemu-devel] [PATCH v3 4/8] qdev: Extract property-default code to qdev_property_set_to_default() Eduardo Habkost
2016-10-26 16:30 ` [Qemu-devel] [PATCH v3 5/8] qdev: Register static properties as class properties Eduardo Habkost
2016-10-27 14:51 ` Igor Mammedov
2016-10-27 14:57 ` Eduardo Habkost
2016-10-27 15:30 ` Igor Mammedov
2016-10-27 16:37 ` Eduardo Habkost
2016-10-29 14:00 ` Igor Mammedov
2016-10-26 16:30 ` [Qemu-devel] [PATCH v3 6/8] qom: object_class_property_iter_init() function Eduardo Habkost
2016-10-27 15:34 ` Igor Mammedov
2016-10-27 16:49 ` Eduardo Habkost
2016-10-26 16:30 ` Eduardo Habkost [this message]
2016-10-26 16:30 ` [Qemu-devel] [PATCH v3 8/8] qdev: Warning about using object_class_property_add() in new code Eduardo Habkost
2016-10-26 16:48 ` Peter Maydell
2016-10-26 16:57 ` Eduardo Habkost
2016-10-26 17:57 ` Peter Maydell
2016-10-26 19:36 ` Eduardo Habkost
2016-10-27 19:48 ` [Qemu-devel] [PATCH v3 0/8] qdev class properties + abstract class support on device-list-properties Eduardo Habkost
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1477499426-9550-8-git-send-email-ehabkost@redhat.com \
--to=ehabkost@redhat.com \
--cc=afaerber@suse.de \
--cc=armbru@redhat.com \
--cc=berrange@redhat.com \
--cc=imammedo@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).