qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH v3 4/7] machine: DEFINE_MACHINE macro


From: Eduardo Habkost
Subject: [Qemu-devel] [PATCH v3 4/7] machine: DEFINE_MACHINE macro
Date: Fri, 4 Sep 2015 15:37:06 -0300

The macro will allow easy registration of a TYPE_MACHINE subclass, using
only the machine name and a MachineClass initialization function as
parameter.

Signed-off-by: Eduardo Habkost <address@hidden>
---
Changes series v1 -> series v2: none

Changes series v2 -> series v3:
* Don't set MachineClass::name explicitly
  (Now TYPE_MACHINE does that automatically)
* Use MACHINE_TYPE_NAME macro
---
 include/hw/boards.h | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/include/hw/boards.h b/include/hw/boards.h
index 178517c..befae01 100644
--- a/include/hw/boards.h
+++ b/include/hw/boards.h
@@ -158,4 +158,21 @@ struct MachineState {
     AccelState *accelerator;
 };
 
+#define DEFINE_MACHINE(namestr, machine_initfn) \
+    static void machine_initfn##_class_init(ObjectClass *oc, void *data) \
+    { \
+        MachineClass *mc = MACHINE_CLASS(oc); \
+        machine_initfn(mc); \
+    } \
+    static const TypeInfo machine_initfn##_typeinfo = { \
+        .name       = MACHINE_TYPE_NAME(namestr), \
+        .parent     = TYPE_MACHINE, \
+        .class_init = machine_initfn##_class_init, \
+    }; \
+    static void machine_initfn##_register_types(void) \
+    { \
+        type_register_static(&machine_initfn##_typeinfo); \
+    } \
+    machine_init(machine_initfn##_register_types)
+
 #endif
-- 
2.1.0




reply via email to

[Prev in Thread] Current Thread [Next in Thread]