qdev: Make qdev_realize() support bus-less devices
So far, qdev_realize() supports only devices that plug into a bus: argument @bus cannot be null. Extend it to support bus-less devices, too. Signed-off-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Message-Id: <20200610053247.1583243-55-armbru@redhat.com>
This commit is contained in:
parent
1afec9e8ea
commit
510ef98dca
@ -408,7 +408,7 @@ void qdev_init_nofail(DeviceState *dev)
|
|||||||
/*
|
/*
|
||||||
* Realize @dev.
|
* Realize @dev.
|
||||||
* @dev must not be plugged into a bus.
|
* @dev must not be plugged into a bus.
|
||||||
* Plug @dev into @bus. This takes a reference to @dev.
|
* If @bus, plug @dev into @bus. This takes a reference to @dev.
|
||||||
* If @dev has no QOM parent, make one up, taking another reference.
|
* If @dev has no QOM parent, make one up, taking another reference.
|
||||||
* On success, return true.
|
* On success, return true.
|
||||||
* On failure, store an error through @errp and return false.
|
* On failure, store an error through @errp and return false.
|
||||||
@ -418,9 +418,12 @@ bool qdev_realize(DeviceState *dev, BusState *bus, Error **errp)
|
|||||||
Error *err = NULL;
|
Error *err = NULL;
|
||||||
|
|
||||||
assert(!dev->realized && !dev->parent_bus);
|
assert(!dev->realized && !dev->parent_bus);
|
||||||
assert(bus);
|
|
||||||
|
|
||||||
qdev_set_parent_bus(dev, bus);
|
if (bus) {
|
||||||
|
qdev_set_parent_bus(dev, bus);
|
||||||
|
} else {
|
||||||
|
assert(!DEVICE_GET_CLASS(dev)->bus_type);
|
||||||
|
}
|
||||||
|
|
||||||
object_property_set_bool(OBJECT(dev), true, "realized", &err);
|
object_property_set_bool(OBJECT(dev), true, "realized", &err);
|
||||||
if (err) {
|
if (err) {
|
||||||
|
Loading…
Reference in New Issue
Block a user