From a4d934ea079563a38cc6ea4a556da3fb14a2b753 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Thu, 24 Apr 2025 15:10:49 +0200 Subject: [PATCH] hw/boards: Introduce DEFINE_MACHINE_WITH_INTERFACE_ARRAY() macro MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit DEFINE_MACHINE_WITH_INTERFACE_ARRAY() is similar to DEFINE_MACHINE_WITH_INTERFACES() but allows to pass an InterfaceInfo[] pointer. Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: Pierrick Bouvier Message-Id: <20251020220941.65269-5-philmd@linaro.org> --- include/hw/boards.h | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/include/hw/boards.h b/include/hw/boards.h index b2964cf055..a48ed4f86a 100644 --- a/include/hw/boards.h +++ b/include/hw/boards.h @@ -507,7 +507,7 @@ struct MachineState { */ #define DEFINE_MACHINE_EXTENDED(namestr, PARENT_NAME, InstanceName, \ - machine_initfn, ABSTRACT, ...) \ + machine_initfn, ABSTRACT, ifaces...) \ static void machine_initfn##_class_init(ObjectClass *oc, const void *data) \ { \ MachineClass *mc = MACHINE_CLASS(oc); \ @@ -519,7 +519,7 @@ struct MachineState { .class_init = machine_initfn##_class_init, \ .instance_size = sizeof(InstanceName), \ .abstract = ABSTRACT, \ - .interfaces = (const InterfaceInfo[]) { __VA_ARGS__ }, \ + .interfaces = ifaces, \ }; \ static void machine_initfn##_register_types(void) \ { \ @@ -529,11 +529,15 @@ struct MachineState { #define DEFINE_MACHINE(namestr, machine_initfn) \ DEFINE_MACHINE_EXTENDED(namestr, MACHINE, MachineState, machine_initfn, \ - false, { }) + false, NULL) -#define DEFINE_MACHINE_WITH_INTERFACES(namestr, machine_initfn, ...) \ +#define DEFINE_MACHINE_WITH_INTERFACE_ARRAY(namestr, machine_initfn, ifaces...)\ DEFINE_MACHINE_EXTENDED(namestr, MACHINE, MachineState, machine_initfn, \ - false, __VA_ARGS__) + false, ifaces) + +#define DEFINE_MACHINE_WITH_INTERFACES(namestr, machine_initfn, ...) \ + DEFINE_MACHINE_WITH_INTERFACE_ARRAY(namestr, machine_initfn, \ + (const InterfaceInfo[]) { __VA_ARGS__ }) /* * Helper for dispatching different macros based on how -- 2.47.3