qom: let object_new use a module if the type is not present
object_initialize() can use modules (it was added there because
virtio-gpu-device is a child device of virtio-gpu-pci; commit
64f7aece8e
, "object_initialize: try module load", 2020-09-15).
object_new() cannot; make things consistent.
qdev_new() is now just a simple wrapper that returns DeviceState.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
144d80f69e
commit
02009a12bc
@ -146,22 +146,6 @@ bool qdev_set_parent_bus(DeviceState *dev, BusState *bus, Error **errp)
|
||||
|
||||
DeviceState *qdev_new(const char *name)
|
||||
{
|
||||
ObjectClass *oc = object_class_by_name(name);
|
||||
#ifdef CONFIG_MODULES
|
||||
if (!oc) {
|
||||
int rv = module_load_qom(name, &error_fatal);
|
||||
if (rv > 0) {
|
||||
oc = object_class_by_name(name);
|
||||
} else {
|
||||
error_report("could not find a module for type '%s'", name);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
if (!oc) {
|
||||
error_report("unknown type '%s'", name);
|
||||
abort();
|
||||
}
|
||||
return DEVICE(object_new(name));
|
||||
}
|
||||
|
||||
|
@ -790,7 +790,7 @@ Object *object_new_with_class(ObjectClass *klass)
|
||||
|
||||
Object *object_new(const char *typename)
|
||||
{
|
||||
TypeImpl *ti = type_get_by_name_noload(typename);
|
||||
TypeImpl *ti = type_get_or_load_by_name(typename, &error_fatal);
|
||||
|
||||
return object_new_with_type(ti);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user