From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:41948) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RaCOJ-0001wM-10 for qemu-devel@nongnu.org; Mon, 12 Dec 2011 15:22:28 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RaCOC-0000aQ-OS for qemu-devel@nongnu.org; Mon, 12 Dec 2011 15:22:21 -0500 Received: from cpe-70-123-132-139.austin.res.rr.com ([70.123.132.139]:44472 helo=localhost6.localdomain6) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RaCOC-0000aC-7n for qemu-devel@nongnu.org; Mon, 12 Dec 2011 15:22:20 -0500 From: Anthony Liguori Date: Mon, 12 Dec 2011 14:18:08 -0600 Message-Id: <1323721273-32404-13-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 012/197] qdev: add explicitly named devices to the root complex 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 We first add a 'peripheral' container to the root device that we add user created devices to. This provides all user created devices with a unique and isolated namespace. Signed-off-by: Anthony Liguori --- hw/qdev.c | 14 ++++++++++++++ 1 files changed, 14 insertions(+), 0 deletions(-) diff --git a/hw/qdev.c b/hw/qdev.c index 42430fa..af4c6a2 100644 --- a/hw/qdev.c +++ b/hw/qdev.c @@ -227,6 +227,19 @@ int qdev_device_help(QemuOpts *opts) return 1; } +static DeviceState *qdev_get_peripheral(void) +{ + static DeviceState *dev; + + if (dev == NULL) { + dev = qdev_create(NULL, "container"); + qdev_property_add_child(qdev_get_root(), "peripheral", dev, NULL); + qdev_init_nofail(dev); + } + + return dev; +} + DeviceState *qdev_device_add(QemuOpts *opts) { const char *driver, *path, *id; @@ -278,6 +291,7 @@ DeviceState *qdev_device_add(QemuOpts *opts) id = qemu_opts_id(opts); if (id) { qdev->id = id; + qdev_property_add_child(qdev_get_peripheral(), qdev->id, qdev, NULL); } if (qemu_opt_foreach(opts, set_property, qdev, 1) != 0) { qdev_free(qdev); -- 1.7.4.1