hw/sysbus: Introduce TYPE_DYNAMIC_SYS_BUS_DEVICE
Some TYPE_SYS_BUS_DEVICEs can be optionally dynamically plugged on the TYPE_PLATFORM_BUS_DEVICE. Rather than sometimes noting that with comment around the 'user_creatable = true' line in each DeviceRealize handler, introduce an abstract TYPE_DYNAMIC_SYS_BUS_DEVICE class. Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Alexander Graf <graf@amazon.com> Reviewed-by: Clément Mathieu--Drif <clement.mathieu--drif@eviden.com> Message-Id: <20250125181343.59151-4-philmd@linaro.org>
This commit is contained in:
parent
45683d1e7c
commit
47dfd350fb
@ -320,6 +320,14 @@ BusState *sysbus_get_default(void)
|
|||||||
return main_system_bus;
|
return main_system_bus;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void dynamic_sysbus_device_class_init(ObjectClass *klass, void *data)
|
||||||
|
{
|
||||||
|
DeviceClass *k = DEVICE_CLASS(klass);
|
||||||
|
|
||||||
|
k->user_creatable = true;
|
||||||
|
k->hotpluggable = false;
|
||||||
|
}
|
||||||
|
|
||||||
static const TypeInfo sysbus_types[] = {
|
static const TypeInfo sysbus_types[] = {
|
||||||
{
|
{
|
||||||
.name = TYPE_SYSTEM_BUS,
|
.name = TYPE_SYSTEM_BUS,
|
||||||
@ -335,6 +343,12 @@ static const TypeInfo sysbus_types[] = {
|
|||||||
.class_size = sizeof(SysBusDeviceClass),
|
.class_size = sizeof(SysBusDeviceClass),
|
||||||
.class_init = sysbus_device_class_init,
|
.class_init = sysbus_device_class_init,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.name = TYPE_DYNAMIC_SYS_BUS_DEVICE,
|
||||||
|
.parent = TYPE_SYS_BUS_DEVICE,
|
||||||
|
.class_init = dynamic_sysbus_device_class_init,
|
||||||
|
.abstract = true,
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
DEFINE_TYPES(sysbus_types)
|
DEFINE_TYPES(sysbus_types)
|
||||||
|
@ -19,6 +19,8 @@ DECLARE_INSTANCE_CHECKER(BusState, SYSTEM_BUS,
|
|||||||
OBJECT_DECLARE_TYPE(SysBusDevice, SysBusDeviceClass,
|
OBJECT_DECLARE_TYPE(SysBusDevice, SysBusDeviceClass,
|
||||||
SYS_BUS_DEVICE)
|
SYS_BUS_DEVICE)
|
||||||
|
|
||||||
|
#define TYPE_DYNAMIC_SYS_BUS_DEVICE "dynamic-sysbus-device"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* SysBusDeviceClass:
|
* SysBusDeviceClass:
|
||||||
*
|
*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user