diff options
| author | Igor Mammedov <imammedo@redhat.com> | 2014-06-02 15:24:57 +0200 |
|---|---|---|
| committer | Michael S. Tsirkin <mst@redhat.com> | 2014-06-18 21:09:55 +0300 |
| commit | d5747cace73a9002f097a7da41253749c59fb36a (patch) | |
| tree | c9e06e8a5ddd8f5157125a6b5e819ef6fa0f92d7 /hw/i386/pc.c | |
| parent | 2edaf21b939eb3b7f058fbc3cb7f7e14d6262486 (diff) | |
| download | focaccia-qemu-d5747cace73a9002f097a7da41253749c59fb36a.tar.gz focaccia-qemu-d5747cace73a9002f097a7da41253749c59fb36a.zip | |
pc: create custom generic PC machine type
it will be used for PC specific options/variables Signed-off-by: Igor Mammedov <imammedo@redhat.com> Acked-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Diffstat (limited to 'hw/i386/pc.c')
| -rw-r--r-- | hw/i386/pc.c | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/hw/i386/pc.c b/hw/i386/pc.c index 3e0ecf140d..77c587b291 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -1455,3 +1455,60 @@ void ioapic_init_gsi(GSIState *gsi_state, const char *parent_name) gsi_state->ioapic_irq[i] = qdev_get_gpio_in(dev, i); } } + +static void pc_generic_machine_class_init(ObjectClass *oc, void *data) +{ + MachineClass *mc = MACHINE_CLASS(oc); + QEMUMachine *qm = data; + + mc->name = qm->name; + mc->alias = qm->alias; + mc->desc = qm->desc; + mc->init = qm->init; + mc->reset = qm->reset; + mc->hot_add_cpu = qm->hot_add_cpu; + mc->kvm_type = qm->kvm_type; + mc->block_default_type = qm->block_default_type; + mc->max_cpus = qm->max_cpus; + mc->no_serial = qm->no_serial; + mc->no_parallel = qm->no_parallel; + mc->use_virtcon = qm->use_virtcon; + mc->use_sclp = qm->use_sclp; + mc->no_floppy = qm->no_floppy; + mc->no_cdrom = qm->no_cdrom; + mc->no_sdcard = qm->no_sdcard; + mc->is_default = qm->is_default; + mc->default_machine_opts = qm->default_machine_opts; + mc->default_boot_order = qm->default_boot_order; + mc->compat_props = qm->compat_props; + mc->hw_version = qm->hw_version; +} + +void qemu_register_pc_machine(QEMUMachine *m) +{ + char *name = g_strconcat(m->name, TYPE_MACHINE_SUFFIX, NULL); + TypeInfo ti = { + .name = name, + .parent = TYPE_PC_MACHINE, + .class_init = pc_generic_machine_class_init, + .class_data = (void *)m, + }; + + type_register(&ti); + g_free(name); +} + +static const TypeInfo pc_machine_info = { + .name = TYPE_PC_MACHINE, + .parent = TYPE_MACHINE, + .abstract = true, + .instance_size = sizeof(PCMachineState), + .class_size = sizeof(PCMachineClass), +}; + +static void pc_machine_register_types(void) +{ + type_register_static(&pc_machine_info); +} + +type_init(pc_machine_register_types) |