[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 10/25] qdev: do not propagate properties to subclass
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PATCH 10/25] qdev: do not propagate properties to subclasses |
Date: |
Tue, 3 Apr 2012 13:15:38 +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 4ac5616..d2b0134 100644
--- a/hw/qdev.c
+++ b/hw/qdev.c
@@ -671,6 +671,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);
@@ -697,6 +707,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
- [Qemu-devel] [PATCH 06/25] qdev: fix -device foo,?, (continued)
- [Qemu-devel] [PATCH 06/25] qdev: fix -device foo,?, Paolo Bonzini, 2012/04/03
- [Qemu-devel] [PATCH 07/25] qdev: use object_property_print in info qtree, Paolo Bonzini, 2012/04/03
- [Qemu-devel] [PATCH 08/25] qdev: remove qdev_prop_set_defaults, Paolo Bonzini, 2012/04/03
- [Qemu-devel] [PATCH 09/25] qdev: move bus properties to a separate global, Paolo Bonzini, 2012/04/03
- [Qemu-devel] [PATCH 10/25] qdev: do not propagate properties to subclasses,
Paolo Bonzini <=
- [Qemu-devel] [PATCH 11/25] qdev: pick global properties from superclasses, Paolo Bonzini, 2012/04/03
- [Qemu-devel] [PATCH 12/25] qdev: factor setting of global properties, Paolo Bonzini, 2012/04/03
- [Qemu-devel] [PATCH 13/25] qdev: replace bus properties with superclass properties, Paolo Bonzini, 2012/04/03
- [Qemu-devel] [PATCH 14/25] qapi: add Visitor interfaces for uint*_t and int*_t, Paolo Bonzini, 2012/04/03
- [Qemu-devel] [PATCH 15/25] qdev: use int32_t container for devfn property, Paolo Bonzini, 2012/04/03
- [Qemu-devel] [PATCH 17/25] qdev: remove PropertyInfo range checking, Paolo Bonzini, 2012/04/03
- [Qemu-devel] [PATCH 19/25] qom: push state up to Object, Paolo Bonzini, 2012/04/03
- [Qemu-devel] [PATCH 23/25] qom: add realized property, Paolo Bonzini, 2012/04/03