Summary: - Object properties are registered by the classes' instance_init() functions - qdev_prop_set_globals() needs all properties to be registered before being called. - Hence, qdev_prop_set_globals() can't be called from device_initfn().
Reference: http://article.gmane.org/gmane.comp.emulators.qemu/173753 This series is a larger than the single-patch suggestion sent by Igor (URL above), just because I wanted to include a unit test for the new code. To do that, I pulled the qdev-split code sent previously to the list, so a qdev unit test could be written without pulling too many dependencies. Patches 1-3 are just code movement, patch 3 adds the qdev unit test, patches 5-6 finally introduce post_init(), and move the qdev_prop_set_globals() call to post_init(). Anthony Liguori (1): qdev: split up header so it can be used in cpu.h Eduardo Habkost (4): qdev: separate core from the code used only by qemu-system-* tests: unit tests for qdev global-properties handling qom: introduce post_init() function qdev: set globals on post_init() function Igor Mammedov (1): qapi-types.h doesn't really need to include qemu-common.h hw/Makefile.objs | 1 + hw/irq.h | 2 + hw/mc146818rtc.c | 1 + hw/qdev-addr.c | 1 + hw/qdev-core.h | 240 ++++++++++++++++++++++++++ hw/qdev-monitor.h | 16 ++ hw/qdev-properties-system.c | 329 ++++++++++++++++++++++++++++++++++++ hw/qdev-properties.c | 321 +---------------------------------- hw/qdev-properties.h | 131 +++++++++++++++ hw/qdev-system.c | 93 +++++++++++ hw/qdev.c | 102 +---------- hw/qdev.h | 371 +---------------------------------------- include/qemu/object.h | 3 + qom/object.c | 14 ++ scripts/qapi-types.py | 3 +- tests/Makefile | 6 + tests/fake-qdev.c | 52 ++++++ tests/test-qdev-global-props.c | 178 ++++++++++++++++++++ 18 files changed, 1083 insertions(+), 781 deletions(-) create mode 100644 hw/qdev-core.h create mode 100644 hw/qdev-monitor.h create mode 100644 hw/qdev-properties-system.c create mode 100644 hw/qdev-properties.h create mode 100644 hw/qdev-system.c create mode 100644 tests/fake-qdev.c create mode 100644 tests/test-qdev-global-props.c -- 1.7.11.4
