qdev: Convert qbus_find() to QError
This commit is contained in:
parent
07574baf7b
commit
ac8dae6794
25
hw/qdev.c
25
hw/qdev.c
@ -216,18 +216,21 @@ DeviceState *qdev_device_add(QemuOpts *opts)
|
|||||||
path = qemu_opt_get(opts, "bus");
|
path = qemu_opt_get(opts, "bus");
|
||||||
if (path != NULL) {
|
if (path != NULL) {
|
||||||
bus = qbus_find(path);
|
bus = qbus_find(path);
|
||||||
if (bus && bus->info != info->bus_info) {
|
if (!bus) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
if (bus->info != info->bus_info) {
|
||||||
error_report("Device '%s' can't go on a %s bus",
|
error_report("Device '%s' can't go on a %s bus",
|
||||||
driver, bus->info->name);
|
driver, bus->info->name);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
bus = qbus_find_recursive(main_system_bus, NULL, info->bus_info);
|
bus = qbus_find_recursive(main_system_bus, NULL, info->bus_info);
|
||||||
}
|
if (!bus) {
|
||||||
if (!bus) {
|
error_report("Did not find %s bus for %s",
|
||||||
error_report("Did not find %s bus for %s",
|
info->bus_info->name, info->name);
|
||||||
path ? path : info->bus_info->name, info->name);
|
return NULL;
|
||||||
return NULL;
|
}
|
||||||
}
|
}
|
||||||
if (qdev_hotplug && !bus->allow_hotplug) {
|
if (qdev_hotplug && !bus->allow_hotplug) {
|
||||||
error_report("Bus %s does not support hotplugging",
|
error_report("Bus %s does not support hotplugging",
|
||||||
@ -560,7 +563,7 @@ static BusState *qbus_find(const char *path)
|
|||||||
}
|
}
|
||||||
bus = qbus_find_recursive(main_system_bus, elem, NULL);
|
bus = qbus_find_recursive(main_system_bus, elem, NULL);
|
||||||
if (!bus) {
|
if (!bus) {
|
||||||
error_report("bus \"%s\" not found", elem);
|
qerror_report(QERR_BUS_NOT_FOUND, elem);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
pos = len;
|
pos = len;
|
||||||
@ -583,7 +586,7 @@ static BusState *qbus_find(const char *path)
|
|||||||
pos += len;
|
pos += len;
|
||||||
dev = qbus_find_dev(bus, elem);
|
dev = qbus_find_dev(bus, elem);
|
||||||
if (!dev) {
|
if (!dev) {
|
||||||
error_report("device \"%s\" not found", elem);
|
qerror_report(QERR_DEVICE_NOT_FOUND, elem);
|
||||||
qbus_list_dev(bus);
|
qbus_list_dev(bus);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@ -597,12 +600,12 @@ static BusState *qbus_find(const char *path)
|
|||||||
* one child bus accept it nevertheless */
|
* one child bus accept it nevertheless */
|
||||||
switch (dev->num_child_bus) {
|
switch (dev->num_child_bus) {
|
||||||
case 0:
|
case 0:
|
||||||
error_report("device has no child bus (%s)", path);
|
qerror_report(QERR_DEVICE_NO_BUS, elem);
|
||||||
return NULL;
|
return NULL;
|
||||||
case 1:
|
case 1:
|
||||||
return QLIST_FIRST(&dev->child_bus);
|
return QLIST_FIRST(&dev->child_bus);
|
||||||
default:
|
default:
|
||||||
error_report("device has multiple child busses (%s)", path);
|
qerror_report(QERR_DEVICE_MULTIPLE_BUSSES, elem);
|
||||||
qbus_list_bus(dev);
|
qbus_list_bus(dev);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@ -616,7 +619,7 @@ static BusState *qbus_find(const char *path)
|
|||||||
pos += len;
|
pos += len;
|
||||||
bus = qbus_find_bus(dev, elem);
|
bus = qbus_find_bus(dev, elem);
|
||||||
if (!bus) {
|
if (!bus) {
|
||||||
error_report("child bus \"%s\" not found", elem);
|
qerror_report(QERR_BUS_NOT_FOUND, elem);
|
||||||
qbus_list_bus(dev);
|
qbus_list_bus(dev);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user