diff options
author | Anthony Liguori <aliguori@us.ibm.com> | 2011-12-12 14:29:28 -0600 |
---|---|---|
committer | Anthony Liguori <aliguori@us.ibm.com> | 2011-12-15 09:20:47 -0600 |
commit | a10f07a7d0827eeef920c16b500b50030b7ff651 (patch) | |
tree | a44dcb4da7c63ea80b9866b7f1b87aa86263d34d | |
parent | a5296ca9df745d8af319282ab5d85439c211bb10 (diff) |
qom: introduce root device
This is based on Jan's suggestion for how to do unique naming. The root device
is the root of composition. All devices are reachable via child<> links from
this device.
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
-rw-r--r-- | Makefile.objs | 2 | ||||
-rw-r--r-- | hw/container.c | 20 | ||||
-rw-r--r-- | hw/qdev.c | 12 | ||||
-rw-r--r-- | hw/qdev.h | 8 |
4 files changed, 41 insertions, 1 deletions
diff --git a/Makefile.objs b/Makefile.objs index 281b698c3c..f753d838ff 100644 --- a/Makefile.objs +++ b/Makefile.objs @@ -278,7 +278,7 @@ hw-obj-$(CONFIG_LSI_SCSI_PCI) += lsi53c895a.o hw-obj-$(CONFIG_ESP) += esp.o hw-obj-y += dma-helpers.o sysbus.o isa-bus.o -hw-obj-y += qdev-addr.o +hw-obj-y += qdev-addr.o container.o # VGA hw-obj-$(CONFIG_VGA_PCI) += vga-pci.o diff --git a/hw/container.c b/hw/container.c new file mode 100644 index 0000000000..9cbf3992c4 --- /dev/null +++ b/hw/container.c @@ -0,0 +1,20 @@ +#include "sysbus.h" + +static int container_initfn(SysBusDevice *dev) +{ + return 0; +} + +static SysBusDeviceInfo container_info = { + .init = container_initfn, + .qdev.name = "container", + .qdev.size = sizeof(SysBusDevice), + .qdev.no_user = 1, +}; + +static void container_init(void) +{ + sysbus_register_withprop(&container_info); +} + +device_init(container_init); @@ -1161,3 +1161,15 @@ void qdev_property_add_legacy(DeviceState *dev, Property *prop, g_free(type); } + +DeviceState *qdev_get_root(void) +{ + static DeviceState *qdev_root; + + if (!qdev_root) { + qdev_root = qdev_create(NULL, "container"); + qdev_init_nofail(qdev_root); + } + + return qdev_root; +} @@ -482,4 +482,12 @@ const char *qdev_property_get_type(DeviceState *dev, const char *name, */ void qdev_property_add_legacy(DeviceState *dev, Property *prop, Error **errp); +/** + * @qdev_get_root - returns the root device of the composition tree + * + * Returns: + * The root of the composition tree. + */ +DeviceState *qdev_get_root(void); + #endif |