From patchwork Wed Nov 30 21:03:42 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anthony Liguori X-Patchwork-Id: 128586 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [140.186.70.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 3479D1007D1 for ; Thu, 1 Dec 2011 08:06:18 +1100 (EST) Received: from localhost ([::1]:32823 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RVrM7-0000fY-C9 for incoming@patchwork.ozlabs.org; Wed, 30 Nov 2011 16:06:15 -0500 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 Received: from localhost6.localdomain6 (localhost.localdomain [127.0.0.1]) by localhost6.localdomain6 (8.14.4/8.14.4/Debian-2ubuntu1) with ESMTP id pAUL4kpm030223; Wed, 30 Nov 2011 15:04:46 -0600 Received: (from anthony@localhost) by localhost6.localdomain6 (8.14.4/8.14.4/Submit) id pAUL4iCU030210; Wed, 30 Nov 2011 15:04:44 -0600 From: Anthony Liguori To: qemu-devel@nongnu.org Date: Wed, 30 Nov 2011 15:03:42 -0600 Message-Id: <1322687028-29714-13-git-send-email-aliguori@us.ibm.com> X-Mailer: git-send-email 1.7.4.1 In-Reply-To: <1322687028-29714-1-git-send-email-aliguori@us.ibm.com> References: <1322687028-29714-1-git-send-email-aliguori@us.ibm.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 70.123.132.139 Cc: Kevin Wolf , Peter Maydell , Anthony Liguori , Stefan Hajnoczi , Jan Kiszka , Markus Armbruster , Luiz Capitulino Subject: [Qemu-devel] [PATCH 12/18] dev: add an anonymous peripheral container X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org 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;