On 24/7/26 02:09, Pierrick Bouvier wrote:
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);

Hopefully we won't have to call this with heterogeneous machines.
Otherwise we might have to add another helper:

       bool (*is_available_ti)(const TargetInfo *ti);

+} 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;
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>


Reply via email to