qdev: Convert qbus_find() to QError

This commit is contained in:
Markus Armbruster 2010-02-19 18:09:33 +01:00
parent 07574baf7b
commit ac8dae6794

View File

@ -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;
} }