[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 09/24] qdev: do not propagate properties to subcl
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PATCH v2 09/24] qdev: do not propagate properties to subclasses |
Date: |
Wed, 11 Apr 2012 23:30:27 +0200 |
As soon as we'll look up properties along the inheritance chain, we
will have duplicates if class A defines some properties and its
subclass B does not define any, because class_b->props will be
left equal to class_a->props.
The solution here is to reintroduce the class_base_init TypeInfo
callback, that was present in one of the early QOM versions but
removed (on my request...) before committing.
Signed-off-by: Paolo Bonzini <address@hidden>
---
hw/qdev.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/hw/qdev.c b/hw/qdev.c
index bb6c1aa..d622dd7 100644
--- a/hw/qdev.c
+++ b/hw/qdev.c
@@ -653,6 +653,16 @@ static void device_finalize(Object *obj)
QTAILQ_REMOVE(&dev->parent_bus->children, dev, sibling);
}
+static void device_class_base_init(ObjectClass *class, void *data)
+{
+ DeviceClass *klass = DEVICE_CLASS(class);
+
+ /* We explicitly look up properties in the superclasses,
+ * so do not propagate them to the subclasses.
+ */
+ klass->props = NULL;
+}
+
void device_reset(DeviceState *dev)
{
DeviceClass *klass = DEVICE_GET_CLASS(dev);
@@ -679,6 +689,7 @@ static TypeInfo device_type_info = {
.instance_size = sizeof(DeviceState),
.instance_init = device_initfn,
.instance_finalize = device_finalize,
+ .class_base_init = device_class_base_init,
.abstract = true,
.class_size = sizeof(DeviceClass),
};
--
1.7.9.3
- Re: [Qemu-devel] [PATCH v2 04/24] qom: make Object a type, (continued)
Re: [Qemu-devel] [PATCH v2 04/24] qom: make Object a type, Andreas Färber, 2012/04/12
[Qemu-devel] [PATCH v2 05/24] qdev: push "type" property up to Object, Paolo Bonzini, 2012/04/11
[Qemu-devel] [PATCH v2 06/24] qdev: fix -device foo,?, Paolo Bonzini, 2012/04/11
[Qemu-devel] [PATCH v2 08/24] qdev: move bus properties to a separate global, Paolo Bonzini, 2012/04/11
[Qemu-devel] [PATCH v2 07/24] qdev: use object_property_print in info qtree, Paolo Bonzini, 2012/04/11
[Qemu-devel] [PATCH v2 09/24] qdev: do not propagate properties to subclasses,
Paolo Bonzini <=
[Qemu-devel] [PATCH v2 11/24] qdev: clean up global properties, Paolo Bonzini, 2012/04/11
[Qemu-devel] [PATCH v2 10/24] qdev: move bus properties to abstract superclasses, Paolo Bonzini, 2012/04/11
[Qemu-devel] [PATCH v2 12/24] qdev: remove qdev_prop_set_defaults, Paolo Bonzini, 2012/04/11
[Qemu-devel] [PATCH v2 13/24] qapi: add Visitor interfaces for uint*_t and int*_t, Paolo Bonzini, 2012/04/11
[Qemu-devel] [PATCH v2 14/24] qdev: use int32_t container for devfn property, Paolo Bonzini, 2012/04/11
[Qemu-devel] [PATCH v2 15/24] qdev: switch property accessors to fixed-width visitor interfaces, Paolo Bonzini, 2012/04/11
[Qemu-devel] [PATCH v2 17/24] qdev: remove qdev_prop_exists, Paolo Bonzini, 2012/04/11
[Qemu-devel] [PATCH v2 16/24] qdev: remove PropertyInfo range checking, Paolo Bonzini, 2012/04/11
[Qemu-devel] [PATCH v2 18/24] qdev: push state up to Object, Paolo Bonzini, 2012/04/11