From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:35395) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RVrLq-0008Vq-Kp for qemu-devel@nongnu.org; Wed, 30 Nov 2011 16:06:08 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RVrLa-0000lZ-NN for qemu-devel@nongnu.org; Wed, 30 Nov 2011 16:05:48 -0500 Received: from cpe-70-123-132-139.austin.res.rr.com ([70.123.132.139]:37098 helo=localhost6.localdomain6) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RVrLa-0000gw-4l for qemu-devel@nongnu.org; Wed, 30 Nov 2011 16:05:42 -0500 From: Anthony Liguori Date: Wed, 30 Nov 2011 15:03:42 -0600 Message-Id: <1322687028-29714-13-git-send-email-aliguori@us.ibm.com> In-Reply-To: <1322687028-29714-1-git-send-email-aliguori@us.ibm.com> References: <1322687028-29714-1-git-send-email-aliguori@us.ibm.com> Subject: [Qemu-devel] [PATCH 12/18] dev: add an anonymous peripheral container 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 Signed-off-by: Anthony Liguori --- hw/qdev.c | 21 ++++++++++++++++++++- 1 files changed, 20 insertions(+), 1 deletions(-) diff --git a/hw/qdev.c b/hw/qdev.c index 8b8d53e..b944108 100644 --- a/hw/qdev.c +++ b/hw/qdev.c @@ -235,6 +235,19 @@ static DeviceState *qdev_get_peripheral(void) return dev; } +static DeviceState *qdev_get_peripheral_anon(void) +{ + static DeviceState *dev; + + if (dev == NULL) { + dev = qdev_create(NULL, "container"); + qdev_property_add_child(qdev_get_root(), "peripheral-anon", dev, NULL); + qdev_init_nofail(dev); + } + + return dev; +} + DeviceState *qdev_device_add(QemuOpts *opts) { const char *driver, *path, *id; @@ -287,7 +300,13 @@ DeviceState *qdev_device_add(QemuOpts *opts) if (id) { qdev->id = id; qdev_property_add_child(qdev_get_peripheral(), qdev->id, qdev, NULL); - } + } else { + static int anon_count; + gchar *name = g_strdup_printf("device[%d]", anon_count++); + qdev_property_add_child(qdev_get_peripheral_anon(), name, + qdev, NULL); + g_free(name); + } if (qemu_opt_foreach(opts, set_property, qdev, 1) != 0) { qdev_free(qdev); return NULL; -- 1.7.4.1