mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-10 19:14:58 -06:00
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
2 changed files with 16 additions and 0 deletions
|
@ -320,6 +320,14 @@ BusState *sysbus_get_default(void)
|
|||
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[] = {
|
||||
{
|
||||
.name = TYPE_SYSTEM_BUS,
|
||||
|
@ -335,6 +343,12 @@ static const TypeInfo sysbus_types[] = {
|
|||
.class_size = sizeof(SysBusDeviceClass),
|
||||
.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)
|
||||
|
|
|
@ -19,6 +19,8 @@ DECLARE_INSTANCE_CHECKER(BusState, SYSTEM_BUS,
|
|||
OBJECT_DECLARE_TYPE(SysBusDevice, SysBusDeviceClass,
|
||||
SYS_BUS_DEVICE)
|
||||
|
||||
#define TYPE_DYNAMIC_SYS_BUS_DEVICE "dynamic-sysbus-device"
|
||||
|
||||
/**
|
||||
* SysBusDeviceClass:
|
||||
*
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue