mirror of
https://github.com/qemu/qemu.git
synced 2024-11-26 04:13:39 +08:00
dev: add an anonymous peripheral container
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
1bdaacb18f
commit
8eb02831af
21
hw/qdev.c
21
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;
|
||||
|
Loading…
Reference in New Issue
Block a user