Message ID | 1440107676-17326-11-git-send-email-ehabkost@redhat.com |
---|---|
State | New |
Headers | show |
On 08/21/2015 12:54 AM, Eduardo Habkost wrote: > Now all TYPE_MACHINE subclasses use MACHINE_TYPE_NAME to generate the > class name. So instead of requiring each subclass to set > MachineClass::name manually, we can now set it automatically at the > TYPE_MACHINE class_base_init() function. > > Signed-off-by: Eduardo Habkost <ehabkost@redhat.com> > --- > hw/arm/vexpress.c | 2 -- > hw/arm/virt.c | 1 - > hw/core/machine.c | 3 +++ > hw/ppc/mac_newworld.c | 1 - > hw/ppc/spapr.c | 4 ---- > hw/s390x/s390-virtio.c | 1 - > vl.c | 1 - > 7 files changed, 3 insertions(+), 10 deletions(-) > > diff --git a/hw/arm/vexpress.c b/hw/arm/vexpress.c > index a86979d..55aed2b 100644 > --- a/hw/arm/vexpress.c > +++ b/hw/arm/vexpress.c > @@ -758,7 +758,6 @@ static void vexpress_a9_class_init(ObjectClass *oc, void *data) > MachineClass *mc = MACHINE_CLASS(oc); > VexpressMachineClass *vmc = VEXPRESS_MACHINE_CLASS(oc); > > - mc->name = TYPE_VEXPRESS_A9_MACHINE; > mc->desc = "ARM Versatile Express for Cortex-A9"; > > vmc->daughterboard = &a9_daughterboard;; > @@ -769,7 +768,6 @@ static void vexpress_a15_class_init(ObjectClass *oc, void *data) > MachineClass *mc = MACHINE_CLASS(oc); > VexpressMachineClass *vmc = VEXPRESS_MACHINE_CLASS(oc); > > - mc->name = TYPE_VEXPRESS_A15_MACHINE; > mc->desc = "ARM Versatile Express for Cortex-A15"; > > vmc->daughterboard = &a15_daughterboard; > diff --git a/hw/arm/virt.c b/hw/arm/virt.c > index 5ba4b80..af985f6 100644 > --- a/hw/arm/virt.c > +++ b/hw/arm/virt.c > @@ -960,7 +960,6 @@ static void virt_class_init(ObjectClass *oc, void *data) > { > MachineClass *mc = MACHINE_CLASS(oc); > > - mc->name = VIRT_MACHINE_NAME; > mc->desc = "ARM Virtual Machine", > mc->init = machvirt_init; > mc->max_cpus = 8; > diff --git a/hw/core/machine.c b/hw/core/machine.c > index e50c4b7..a889d7a 100644 > --- a/hw/core/machine.c > +++ b/hw/core/machine.c > @@ -305,8 +305,11 @@ static void machine_class_init(ObjectClass *oc, void *data) > static void machine_class_base_init(ObjectClass *oc, void *data) > { > if (!object_class_is_abstract(oc)) { > + MachineClass *mc = MACHINE_CLASS(oc); > const char *cname = object_class_get_name(oc); > assert(g_str_has_suffix(cname, TYPE_MACHINE_SUFFIX)); > + mc->name = g_strndup(cname, > + strlen(cname) - strlen(TYPE_MACHINE_SUFFIX)); > } > } > > diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c > index a6b8209..70e7431 100644 > --- a/hw/ppc/mac_newworld.c > +++ b/hw/ppc/mac_newworld.c > @@ -508,7 +508,6 @@ static void core99_machine_class_init(ObjectClass *oc, void *data) > { > MachineClass *mc = MACHINE_CLASS(oc); > > - mc->name = "mac99"; > mc->desc = "Mac99 based PowerMAC"; > mc->init = ppc_core99_init; > mc->max_cpus = MAX_CPUS; > diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c > index 012b6ed..05926a3 100644 > --- a/hw/ppc/spapr.c > +++ b/hw/ppc/spapr.c > @@ -1919,7 +1919,6 @@ static void spapr_machine_2_1_class_init(ObjectClass *oc, void *data) > { /* end of list */ } > }; > > - mc->name = "pseries-2.1"; > mc->desc = "pSeries Logical Partition (PAPR compliant) v2.1"; > mc->compat_props = compat_props; > } > @@ -1939,7 +1938,6 @@ static void spapr_machine_2_2_class_init(ObjectClass *oc, void *data) > }; > MachineClass *mc = MACHINE_CLASS(oc); > > - mc->name = "pseries-2.2"; > mc->desc = "pSeries Logical Partition (PAPR compliant) v2.2"; > mc->compat_props = compat_props; > } > @@ -1959,7 +1957,6 @@ static void spapr_machine_2_3_class_init(ObjectClass *oc, void *data) > }; > MachineClass *mc = MACHINE_CLASS(oc); > > - mc->name = "pseries-2.3"; > mc->desc = "pSeries Logical Partition (PAPR compliant) v2.3"; > mc->compat_props = compat_props; > } > @@ -1975,7 +1972,6 @@ static void spapr_machine_2_4_class_init(ObjectClass *oc, void *data) > { > MachineClass *mc = MACHINE_CLASS(oc); > > - mc->name = "pseries-2.4"; > mc->desc = "pSeries Logical Partition (PAPR compliant) v2.4"; > mc->alias = "pseries"; > mc->is_default = 1; > diff --git a/hw/s390x/s390-virtio.c b/hw/s390x/s390-virtio.c > index 43d6ccb..35c0ce2 100644 > --- a/hw/s390x/s390-virtio.c > +++ b/hw/s390x/s390-virtio.c > @@ -334,7 +334,6 @@ static void s390_machine_class_init(ObjectClass *oc, void *data) > MachineClass *mc = MACHINE_CLASS(oc); > NMIClass *nc = NMI_CLASS(oc); > > - mc->name = S390_MACHINE; > mc->alias = "s390"; > mc->desc = "VirtIO based S390 machine"; > mc->init = s390_init; > diff --git a/vl.c b/vl.c > index b7ddfeb..870ee48 100644 > --- a/vl.c > +++ b/vl.c > @@ -1432,7 +1432,6 @@ static void qemu_machine_class_init(ObjectClass *oc, void *data) > { > MachineClass *mc = MACHINE_CLASS(oc); > QEMUMachine *qm = data; > - mc->name = qm->name; > mc->desc = qm->desc; > mc->init = qm->init; > mc->kvm_type = qm->kvm_type; > Nice! Please forget the possible stupid question, but what happens with *all* other machine types? Why don't we have to remove the "name" assignment from the other machine types too? Thanks, Marcel
On Tue, Aug 25, 2015 at 11:50:11AM +0300, Marcel Apfelbaum wrote: > On 08/21/2015 12:54 AM, Eduardo Habkost wrote: > >Now all TYPE_MACHINE subclasses use MACHINE_TYPE_NAME to generate the > >class name. So instead of requiring each subclass to set > >MachineClass::name manually, we can now set it automatically at the > >TYPE_MACHINE class_base_init() function. > > > >Signed-off-by: Eduardo Habkost <ehabkost@redhat.com> > >--- > > hw/arm/vexpress.c | 2 -- > > hw/arm/virt.c | 1 - > > hw/core/machine.c | 3 +++ > > hw/ppc/mac_newworld.c | 1 - > > hw/ppc/spapr.c | 4 ---- > > hw/s390x/s390-virtio.c | 1 - > > vl.c | 1 - > > 7 files changed, 3 insertions(+), 10 deletions(-) [...] > >diff --git a/vl.c b/vl.c > >index b7ddfeb..870ee48 100644 > >--- a/vl.c > >+++ b/vl.c > >@@ -1432,7 +1432,6 @@ static void qemu_machine_class_init(ObjectClass *oc, void *data) > > { > > MachineClass *mc = MACHINE_CLASS(oc); > > QEMUMachine *qm = data; > >- mc->name = qm->name; > > mc->desc = qm->desc; > > mc->init = qm->init; > > mc->kvm_type = qm->kvm_type; > > > > Nice! > > Please forget the possible stupid question, but what happens with > *all* other machine types? Why don't we have to remove the "name" > assignment from the other machine types too? Unless I made a mistake and missed something when grepping the code, all machine-types were changed. Most of them use qemu_register_machine() (which uses qemu_machine_class_init(), changed above).
On 08/26/2015 06:02 PM, Eduardo Habkost wrote: > On Tue, Aug 25, 2015 at 11:50:11AM +0300, Marcel Apfelbaum wrote: >> On 08/21/2015 12:54 AM, Eduardo Habkost wrote: >>> Now all TYPE_MACHINE subclasses use MACHINE_TYPE_NAME to generate the >>> class name. So instead of requiring each subclass to set >>> MachineClass::name manually, we can now set it automatically at the >>> TYPE_MACHINE class_base_init() function. >>> >>> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com> >>> --- >>> hw/arm/vexpress.c | 2 -- >>> hw/arm/virt.c | 1 - >>> hw/core/machine.c | 3 +++ >>> hw/ppc/mac_newworld.c | 1 - >>> hw/ppc/spapr.c | 4 ---- >>> hw/s390x/s390-virtio.c | 1 - >>> vl.c | 1 - >>> 7 files changed, 3 insertions(+), 10 deletions(-) > [...] >>> diff --git a/vl.c b/vl.c >>> index b7ddfeb..870ee48 100644 >>> --- a/vl.c >>> +++ b/vl.c >>> @@ -1432,7 +1432,6 @@ static void qemu_machine_class_init(ObjectClass *oc, void *data) >>> { >>> MachineClass *mc = MACHINE_CLASS(oc); >>> QEMUMachine *qm = data; >>> - mc->name = qm->name; >>> mc->desc = qm->desc; >>> mc->init = qm->init; >>> mc->kvm_type = qm->kvm_type; >>> >> >> Nice! >> >> Please forget the possible stupid question, but what happens with >> *all* other machine types? Why don't we have to remove the "name" >> assignment from the other machine types too? > > Unless I made a mistake and missed something when grepping the code, all > machine-types were changed. Most of them use qemu_register_machine() > (which uses qemu_machine_class_init(), changed above). > OK, thanks for the answer. Reviewed-by: Marcel Apfelbaum <marcel@redhat.com> Thanks, Marcel
diff --git a/hw/arm/vexpress.c b/hw/arm/vexpress.c index a86979d..55aed2b 100644 --- a/hw/arm/vexpress.c +++ b/hw/arm/vexpress.c @@ -758,7 +758,6 @@ static void vexpress_a9_class_init(ObjectClass *oc, void *data) MachineClass *mc = MACHINE_CLASS(oc); VexpressMachineClass *vmc = VEXPRESS_MACHINE_CLASS(oc); - mc->name = TYPE_VEXPRESS_A9_MACHINE; mc->desc = "ARM Versatile Express for Cortex-A9"; vmc->daughterboard = &a9_daughterboard;; @@ -769,7 +768,6 @@ static void vexpress_a15_class_init(ObjectClass *oc, void *data) MachineClass *mc = MACHINE_CLASS(oc); VexpressMachineClass *vmc = VEXPRESS_MACHINE_CLASS(oc); - mc->name = TYPE_VEXPRESS_A15_MACHINE; mc->desc = "ARM Versatile Express for Cortex-A15"; vmc->daughterboard = &a15_daughterboard; diff --git a/hw/arm/virt.c b/hw/arm/virt.c index 5ba4b80..af985f6 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -960,7 +960,6 @@ static void virt_class_init(ObjectClass *oc, void *data) { MachineClass *mc = MACHINE_CLASS(oc); - mc->name = VIRT_MACHINE_NAME; mc->desc = "ARM Virtual Machine", mc->init = machvirt_init; mc->max_cpus = 8; diff --git a/hw/core/machine.c b/hw/core/machine.c index e50c4b7..a889d7a 100644 --- a/hw/core/machine.c +++ b/hw/core/machine.c @@ -305,8 +305,11 @@ static void machine_class_init(ObjectClass *oc, void *data) static void machine_class_base_init(ObjectClass *oc, void *data) { if (!object_class_is_abstract(oc)) { + MachineClass *mc = MACHINE_CLASS(oc); const char *cname = object_class_get_name(oc); assert(g_str_has_suffix(cname, TYPE_MACHINE_SUFFIX)); + mc->name = g_strndup(cname, + strlen(cname) - strlen(TYPE_MACHINE_SUFFIX)); } } diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c index a6b8209..70e7431 100644 --- a/hw/ppc/mac_newworld.c +++ b/hw/ppc/mac_newworld.c @@ -508,7 +508,6 @@ static void core99_machine_class_init(ObjectClass *oc, void *data) { MachineClass *mc = MACHINE_CLASS(oc); - mc->name = "mac99"; mc->desc = "Mac99 based PowerMAC"; mc->init = ppc_core99_init; mc->max_cpus = MAX_CPUS; diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index 012b6ed..05926a3 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -1919,7 +1919,6 @@ static void spapr_machine_2_1_class_init(ObjectClass *oc, void *data) { /* end of list */ } }; - mc->name = "pseries-2.1"; mc->desc = "pSeries Logical Partition (PAPR compliant) v2.1"; mc->compat_props = compat_props; } @@ -1939,7 +1938,6 @@ static void spapr_machine_2_2_class_init(ObjectClass *oc, void *data) }; MachineClass *mc = MACHINE_CLASS(oc); - mc->name = "pseries-2.2"; mc->desc = "pSeries Logical Partition (PAPR compliant) v2.2"; mc->compat_props = compat_props; } @@ -1959,7 +1957,6 @@ static void spapr_machine_2_3_class_init(ObjectClass *oc, void *data) }; MachineClass *mc = MACHINE_CLASS(oc); - mc->name = "pseries-2.3"; mc->desc = "pSeries Logical Partition (PAPR compliant) v2.3"; mc->compat_props = compat_props; } @@ -1975,7 +1972,6 @@ static void spapr_machine_2_4_class_init(ObjectClass *oc, void *data) { MachineClass *mc = MACHINE_CLASS(oc); - mc->name = "pseries-2.4"; mc->desc = "pSeries Logical Partition (PAPR compliant) v2.4"; mc->alias = "pseries"; mc->is_default = 1; diff --git a/hw/s390x/s390-virtio.c b/hw/s390x/s390-virtio.c index 43d6ccb..35c0ce2 100644 --- a/hw/s390x/s390-virtio.c +++ b/hw/s390x/s390-virtio.c @@ -334,7 +334,6 @@ static void s390_machine_class_init(ObjectClass *oc, void *data) MachineClass *mc = MACHINE_CLASS(oc); NMIClass *nc = NMI_CLASS(oc); - mc->name = S390_MACHINE; mc->alias = "s390"; mc->desc = "VirtIO based S390 machine"; mc->init = s390_init; diff --git a/vl.c b/vl.c index b7ddfeb..870ee48 100644 --- a/vl.c +++ b/vl.c @@ -1432,7 +1432,6 @@ static void qemu_machine_class_init(ObjectClass *oc, void *data) { MachineClass *mc = MACHINE_CLASS(oc); QEMUMachine *qm = data; - mc->name = qm->name; mc->desc = qm->desc; mc->init = qm->init; mc->kvm_type = qm->kvm_type;
Now all TYPE_MACHINE subclasses use MACHINE_TYPE_NAME to generate the class name. So instead of requiring each subclass to set MachineClass::name manually, we can now set it automatically at the TYPE_MACHINE class_base_init() function. Signed-off-by: Eduardo Habkost <ehabkost@redhat.com> --- hw/arm/vexpress.c | 2 -- hw/arm/virt.c | 1 - hw/core/machine.c | 3 +++ hw/ppc/mac_newworld.c | 1 - hw/ppc/spapr.c | 4 ---- hw/s390x/s390-virtio.c | 1 - vl.c | 1 - 7 files changed, 3 insertions(+), 10 deletions(-)