Commit 0bcdeda7 authored by Blue Swirl's avatar Blue Swirl
Browse files

qdev: add creation function that may fail



Signed-off-by: default avatarBlue Swirl <blauwirbel@gmail.com>
parent 5c81e4ca
Loading
Loading
Loading
Loading
+13 −1
Original line number Diff line number Diff line
@@ -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);
+1 −0
Original line number Diff line number Diff line
@@ -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;