[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 05/10] qom/globals: generalize object_property_se
From: |
Marc-André Lureau |
Subject: |
[Qemu-devel] [PATCH v2 05/10] qom/globals: generalize object_property_set_globals() |
Date: |
Tue, 30 Oct 2018 19:04:48 +0400 |
Handle calls of object_property_set_globals() with any object type,
but only apply globals to TYPE_DEVICE & TYPE_USER_CREATABLE.
Signed-off-by: Marc-André Lureau <address@hidden>
---
qom/globals.c | 22 ++++++++++++++--------
1 file changed, 14 insertions(+), 8 deletions(-)
diff --git a/qom/globals.c b/qom/globals.c
index 587f4a1b5c..8664baebe0 100644
--- a/qom/globals.c
+++ b/qom/globals.c
@@ -15,22 +15,28 @@ void object_property_register_global(GlobalProperty *prop)
void object_property_set_globals(Object *obj)
{
- DeviceState *dev = DEVICE(obj);
GList *l;
+ DeviceState *dev = (DeviceState *)object_dynamic_cast(obj, TYPE_DEVICE);
+
+ if (!dev && !IS_USER_CREATABLE(obj)) {
+ /* only TYPE_DEVICE and TYPE_USER_CREATABLE support globals */
+ return;
+ }
for (l = global_props; l; l = l->next) {
GlobalProperty *prop = l->data;
Error *err = NULL;
- if (object_dynamic_cast(OBJECT(dev), prop->driver) == NULL) {
+ if (object_dynamic_cast(obj, prop->driver) == NULL) {
continue;
}
prop->used = true;
- object_property_parse(OBJECT(dev), prop->value, prop->property, &err);
+ object_property_parse(obj, prop->value, prop->property, &err);
if (err != NULL) {
error_prepend(&err, "can't apply global %s.%s=%s: ",
prop->driver, prop->property, prop->value);
- if (!dev->hotplugged && prop->errp) {
+
+ if (dev && !dev->hotplugged && prop->errp) {
error_propagate(prop->errp, err);
} else {
assert(prop->user_provided);
@@ -56,15 +62,15 @@ int object_property_check_globals(void)
continue;
}
oc = object_class_by_name(prop->driver);
- oc = object_class_dynamic_cast(oc, TYPE_DEVICE);
- if (!oc) {
+ dc = (DeviceClass *)object_class_dynamic_cast(oc, TYPE_DEVICE);
+ if (!IS_USER_CREATABLE_CLASS(oc) && !dc) {
warn_report("global %s.%s has invalid class name",
prop->driver, prop->property);
ret = 1;
continue;
}
- dc = DEVICE_CLASS(oc);
- if (!dc->hotpluggable && !prop->used) {
+
+ if (dc && !dc->hotpluggable) {
warn_report("global %s.%s=%s not used",
prop->driver, prop->property, prop->value);
ret = 1;
--
2.19.0.271.gfe8321ec05
- [Qemu-devel] [PATCH v2 00/10] hostmem: use object "id" for memory region name with >= 3.1, Marc-André Lureau, 2018/10/30
- [Qemu-devel] [PATCH v2 01/10] qom: make user_creatable_complete() specific to UserCreatable, Marc-André Lureau, 2018/10/30
- [Qemu-devel] [PATCH v2 02/10] accel: register global_props like machine globals, Marc-André Lureau, 2018/10/30
- [Qemu-devel] [PATCH v2 03/10] qdev: move qdev_prop_register_global_list() to tests, Marc-André Lureau, 2018/10/30
- [Qemu-devel] [PATCH v2 04/10] qom/globals: move qdev globals to qom, Marc-André Lureau, 2018/10/30
- [Qemu-devel] [PATCH v2 05/10] qom/globals: generalize object_property_set_globals(),
Marc-André Lureau <=
- [Qemu-devel] [PATCH v2 06/10] qom/object: set globals when initializing object, Marc-André Lureau, 2018/10/30
- [Qemu-devel] [PATCH v2 09/10] hw/i386: add pc-i440fx-3.1 & pc-q35-3.1, Marc-André Lureau, 2018/10/30
- [Qemu-devel] [PATCH v2 07/10] qom/object: add set_globals flags, Marc-André Lureau, 2018/10/30
- [Qemu-devel] [PATCH v2 08/10] tests: add user-creatable test to test-qdev-global-props, Marc-André Lureau, 2018/10/30
- [Qemu-devel] [PATCH v2 10/10] hostmem: use object id for memory region name with >= 3.1, Marc-André Lureau, 2018/10/30
- Re: [Qemu-devel] [PATCH v2 00/10] hostmem: use object "id" for memory region name with >= 3.1, no-reply, 2018/10/31