In the next commits, We'll replace the logic to filter QOM types per target from a static one (based on INTERFACES) to a runtime one, based on is_available() function, that can be overriden per class.
Introduce the new interface we'll use for that. Signed-off-by: Pierrick Bouvier <[email protected]> --- include/qemu/target-info-qom.h | 15 +++++++++++++++ target-info-qom.c | 5 +++++ 2 files changed, 20 insertions(+) diff --git a/include/qemu/target-info-qom.h b/include/qemu/target-info-qom.h index 91be415ed33..83eb537333b 100644 --- a/include/qemu/target-info-qom.h +++ b/include/qemu/target-info-qom.h @@ -14,6 +14,21 @@ #define TYPE_TARGET_INFO "target-info" +#define TYPE_TARGET_SPECIFIC "target-specific" + +typedef struct TargetSpecific TargetSpecific; + +typedef struct TargetSpecificClass { + InterfaceClass parent_class; + + bool (*is_available)(void); +} TargetSpecificClass; + +#define TARGET_SPECIFIC(obj) \ + INTERFACE_CHECK(TargetSpecific, (obj), TYPE_TARGET_SPECIFIC) +DECLARE_CLASS_CHECKERS(TargetSpecificClass, TARGET_SPECIFIC, + TYPE_TARGET_SPECIFIC) + typedef struct TargetInfoQom { Object parent_obj; } TargetInfoQom; diff --git a/target-info-qom.c b/target-info-qom.c index 7958a5cc685..1388691657c 100644 --- a/target-info-qom.c +++ b/target-info-qom.c @@ -16,6 +16,11 @@ #include "hw/riscv/machines-qom.h" static const TypeInfo target_info_types[] = { + { + .name = TYPE_TARGET_SPECIFIC, + .parent = TYPE_INTERFACE, + .class_size = sizeof(TargetSpecificClass), + }, { .name = TYPE_TARGET_ARM_MACHINE, .parent = TYPE_INTERFACE, -- 2.43.0
