From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:41720) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RaCNn-0000kf-82 for qemu-devel@nongnu.org; Mon, 12 Dec 2011 15:21:56 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RaCNh-0000VF-2P for qemu-devel@nongnu.org; Mon, 12 Dec 2011 15:21:50 -0500 Received: from cpe-70-123-132-139.austin.res.rr.com ([70.123.132.139]:44401 helo=localhost6.localdomain6) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RaCNg-0000V5-SF for qemu-devel@nongnu.org; Mon, 12 Dec 2011 15:21:49 -0500 From: Anthony Liguori Date: Mon, 12 Dec 2011 14:18:00 -0600 Message-Id: <1323721273-32404-5-git-send-email-aliguori@us.ibm.com> In-Reply-To: <1323721273-32404-1-git-send-email-aliguori@us.ibm.com> References: <1323721273-32404-1-git-send-email-aliguori@us.ibm.com> Subject: [Qemu-devel] [PATCH v3 004/197] qom: introduce root device List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Kevin Wolf , Peter Maydell , Anthony Liguori , Stefan Hajnoczi , Jan Kiszka , Markus Armbruster , Luiz Capitulino 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 --- Makefile.objs | 2 +- hw/container.c | 20 ++++++++++++++++++++ hw/qdev.c | 12 ++++++++++++ hw/qdev.h | 8 ++++++++ 4 files changed, 41 insertions(+), 1 deletions(-) create mode 100644 hw/container.c diff --git a/Makefile.objs b/Makefile.objs index d7a6539..10e794c 100644 --- a/Makefile.objs +++ b/Makefile.objs @@ -279,7 +279,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 0000000..9cbf399 --- /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); diff --git a/hw/qdev.c b/hw/qdev.c index 6f77af9..bb0b9f7 100644 --- a/hw/qdev.c +++ b/hw/qdev.c @@ -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; +} diff --git a/hw/qdev.h b/hw/qdev.h index 3b629d4..52aadd2 100644 --- a/hw/qdev.h +++ b/hw/qdev.h @@ -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 -- 1.7.4.1