From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:45466) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RaCWJ-0000CJ-6z for qemu-devel@nongnu.org; Mon, 12 Dec 2011 15:30:44 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RaCWI-0002Mq-76 for qemu-devel@nongnu.org; Mon, 12 Dec 2011 15:30:43 -0500 Received: from cpe-70-123-132-139.austin.res.rr.com ([70.123.132.139]:49833 helo=localhost6.localdomain6) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RaCWH-0002Mm-S4 for qemu-devel@nongnu.org; Mon, 12 Dec 2011 15:30:42 -0500 From: Anthony Liguori Date: Mon, 12 Dec 2011 14:29:37 -0600 Message-Id: <1323721784-704-14-git-send-email-aliguori@us.ibm.com> In-Reply-To: <1323721784-704-1-git-send-email-aliguori@us.ibm.com> References: <1323721784-704-1-git-send-email-aliguori@us.ibm.com> Subject: [Qemu-devel] [PATCH v3 13/20] 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 cb3fc6e..4d491f1 100644 --- a/hw/qdev.c +++ b/hw/qdev.c @@ -240,6 +240,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; @@ -292,7 +305,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