dev: add an anonymous peripheral container
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
1bdaacb18f
commit
8eb02831af
19
hw/qdev.c
19
hw/qdev.c
|
@ -240,6 +240,19 @@ static DeviceState *qdev_get_peripheral(void)
|
||||||
return dev;
|
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)
|
DeviceState *qdev_device_add(QemuOpts *opts)
|
||||||
{
|
{
|
||||||
const char *driver, *path, *id;
|
const char *driver, *path, *id;
|
||||||
|
@ -292,6 +305,12 @@ DeviceState *qdev_device_add(QemuOpts *opts)
|
||||||
if (id) {
|
if (id) {
|
||||||
qdev->id = id;
|
qdev->id = id;
|
||||||
qdev_property_add_child(qdev_get_peripheral(), qdev->id, qdev, NULL);
|
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) {
|
if (qemu_opt_foreach(opts, set_property, qdev, 1) != 0) {
|
||||||
qdev_free(qdev);
|
qdev_free(qdev);
|
||||||
|
|
Loading…
Reference in a new issue