diff options
author | Eduardo Habkost <ehabkost@redhat.com> | 2015-09-04 15:37:06 -0300 |
---|---|---|
committer | Andreas Färber <afaerber@suse.de> | 2015-09-19 16:40:06 +0200 |
commit | ed0b6de343448d1014b53bcf541041373322fa1c (patch) | |
tree | 5a2f0add7a5bcf3c138596bb4e934c0fba76443a | |
parent | 97c6671cf16640f997fc8c54ef456bbad125b635 (diff) |
machine: DEFINE_MACHINE() macro
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 <ehabkost@redhat.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
-rw-r--r-- | include/hw/boards.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/include/hw/boards.h b/include/hw/boards.h index 586f939a57..4fe2ce5235 100644 --- a/include/hw/boards.h +++ b/include/hw/boards.h @@ -159,4 +159,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 |