qdev: add creation function that may fail

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
This commit is contained in:
Blue Swirl 2011-02-05 14:34:25 +00:00
parent 5c81e4ca9e
commit 0bcdeda7e4
2 changed files with 14 additions and 1 deletions

View File

@ -105,6 +105,18 @@ static DeviceState *qdev_create_from_info(BusState *bus, DeviceInfo *info)
and allows properties to be set. qdev_init should be called to
initialize the actual device emulation. */
DeviceState *qdev_create(BusState *bus, const char *name)
{
DeviceState *dev;
dev = qdev_try_create(bus, name);
if (!dev) {
hw_error("Unknown device '%s' for bus '%s'\n", name, bus->info->name);
}
return dev;
}
DeviceState *qdev_try_create(BusState *bus, const char *name)
{
DeviceInfo *info;
@ -114,7 +126,7 @@ DeviceState *qdev_create(BusState *bus, const char *name)
info = qdev_find_info(bus->info, name);
if (!info) {
hw_error("Unknown device '%s' for bus '%s'\n", name, bus->info->name);
return NULL;
}
return qdev_create_from_info(bus, info);

View File

@ -122,6 +122,7 @@ typedef struct GlobalProperty {
/*** Board API. This should go away once we have a machine config file. ***/
DeviceState *qdev_create(BusState *bus, const char *name);
DeviceState *qdev_try_create(BusState *bus, const char *name);
int qdev_device_help(QemuOpts *opts);
DeviceState *qdev_device_add(QemuOpts *opts);
int qdev_init(DeviceState *dev) QEMU_WARN_UNUSED_RESULT;