From 8eb02831af6c5534d8712cb8db1104852cac26e9 Mon Sep 17 00:00:00 2001 From: Anthony Liguori Date: Mon, 12 Dec 2011 14:29:37 -0600 Subject: [PATCH] dev: add an anonymous peripheral container Signed-off-by: Anthony Liguori --- hw/qdev.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/hw/qdev.c b/hw/qdev.c index cb3fc6e56d..4d491f109e 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;