Message ID | 20200921221045.699690-14-ehabkost@redhat.com |
---|---|
State | New |
Headers | show |
Series | qom: Convert some properties to class properties | expand |
On Mon, 21 Sep 2020 18:10:34 -0400 Eduardo Habkost <ehabkost@redhat.com> wrote: > Class properties make QOM introspection simpler and easier, as > they don't require an object to be instantiated. > > Signed-off-by: Eduardo Habkost <ehabkost@redhat.com> > --- > Cc: Paolo Bonzini <pbonzini@redhat.com> > Cc: Richard Henderson <rth@twiddle.net> > Cc: Eduardo Habkost <ehabkost@redhat.com> > Cc: qemu-devel@nongnu.org > --- > target/i386/cpu.c | 66 ++++++++++++++++++++++++----------------------- > 1 file changed, 34 insertions(+), 32 deletions(-) > > diff --git a/target/i386/cpu.c b/target/i386/cpu.c > index 1c58f764dcb..66792f28ba7 100644 > --- a/target/i386/cpu.c > +++ b/target/i386/cpu.c > @@ -6922,44 +6922,12 @@ static void x86_cpu_initfn(Object *obj) > env->nr_dies = 1; > cpu_set_cpustate_pointers(cpu); > > - object_property_add(obj, "family", "int", > - x86_cpuid_version_get_family, > - x86_cpuid_version_set_family, NULL, NULL); > - object_property_add(obj, "model", "int", > - x86_cpuid_version_get_model, > - x86_cpuid_version_set_model, NULL, NULL); > - object_property_add(obj, "stepping", "int", > - x86_cpuid_version_get_stepping, > - x86_cpuid_version_set_stepping, NULL, NULL); > - object_property_add_str(obj, "vendor", > - x86_cpuid_get_vendor, > - x86_cpuid_set_vendor); > - object_property_add_str(obj, "model-id", > - x86_cpuid_get_model_id, > - x86_cpuid_set_model_id); > - object_property_add(obj, "tsc-frequency", "int", > - x86_cpuid_get_tsc_freq, > - x86_cpuid_set_tsc_freq, NULL, NULL); > object_property_add(obj, "feature-words", "X86CPUFeatureWordInfo", > x86_cpu_get_feature_words, > NULL, NULL, (void *)env->features); > object_property_add(obj, "filtered-features", "X86CPUFeatureWordInfo", > x86_cpu_get_feature_words, > NULL, NULL, (void *)cpu->filtered_features); I'm just curious why these weren't moved as well? > - /* > - * The "unavailable-features" property has the same semantics as > - * CpuDefinitionInfo.unavailable-features on the "query-cpu-definitions" > - * QMP command: they list the features that would have prevented the > - * CPU from running if the "enforce" flag was set. > - */ > - object_property_add(obj, "unavailable-features", "strList", > - x86_cpu_get_unavailable_features, > - NULL, NULL, NULL); > - > -#if !defined(CONFIG_USER_ONLY) > - object_property_add(obj, "crash-information", "GuestPanicInformation", > - x86_cpu_get_crash_info_qom, NULL, NULL, NULL); > -#endif > > for (w = 0; w < FEATURE_WORDS; w++) { > int bitnr; > @@ -7308,6 +7276,40 @@ static void x86_cpu_common_class_init(ObjectClass *oc, void *data) > cc->disas_set_info = x86_disas_set_info; > > dc->user_creatable = true; > + > + object_class_property_add(oc, "family", "int", > + x86_cpuid_version_get_family, > + x86_cpuid_version_set_family, NULL, NULL); > + object_class_property_add(oc, "model", "int", > + x86_cpuid_version_get_model, > + x86_cpuid_version_set_model, NULL, NULL); > + object_class_property_add(oc, "stepping", "int", > + x86_cpuid_version_get_stepping, > + x86_cpuid_version_set_stepping, NULL, NULL); > + object_class_property_add_str(oc, "vendor", > + x86_cpuid_get_vendor, > + x86_cpuid_set_vendor); > + object_class_property_add_str(oc, "model-id", > + x86_cpuid_get_model_id, > + x86_cpuid_set_model_id); > + object_class_property_add(oc, "tsc-frequency", "int", > + x86_cpuid_get_tsc_freq, > + x86_cpuid_set_tsc_freq, NULL, NULL); > + /* > + * The "unavailable-features" property has the same semantics as > + * CpuDefinitionInfo.unavailable-features on the "query-cpu-definitions" > + * QMP command: they list the features that would have prevented the > + * CPU from running if the "enforce" flag was set. > + */ > + object_class_property_add(oc, "unavailable-features", "strList", > + x86_cpu_get_unavailable_features, > + NULL, NULL, NULL); > + > +#if !defined(CONFIG_USER_ONLY) > + object_class_property_add(oc, "crash-information", "GuestPanicInformation", > + x86_cpu_get_crash_info_qom, NULL, NULL, NULL); > +#endif > + > } > > static const TypeInfo x86_cpu_type_info = {
On Tue, Sep 22, 2020 at 08:41:49AM +0200, Igor Mammedov wrote: > On Mon, 21 Sep 2020 18:10:34 -0400 > Eduardo Habkost <ehabkost@redhat.com> wrote: > > > Class properties make QOM introspection simpler and easier, as > > they don't require an object to be instantiated. > > > > Signed-off-by: Eduardo Habkost <ehabkost@redhat.com> > > --- > > Cc: Paolo Bonzini <pbonzini@redhat.com> > > Cc: Richard Henderson <rth@twiddle.net> > > Cc: Eduardo Habkost <ehabkost@redhat.com> > > Cc: qemu-devel@nongnu.org > > --- > > target/i386/cpu.c | 66 ++++++++++++++++++++++++----------------------- > > 1 file changed, 34 insertions(+), 32 deletions(-) > > > > diff --git a/target/i386/cpu.c b/target/i386/cpu.c > > index 1c58f764dcb..66792f28ba7 100644 > > --- a/target/i386/cpu.c > > +++ b/target/i386/cpu.c > > @@ -6922,44 +6922,12 @@ static void x86_cpu_initfn(Object *obj) > > env->nr_dies = 1; > > cpu_set_cpustate_pointers(cpu); > > > > - object_property_add(obj, "family", "int", > > - x86_cpuid_version_get_family, > > - x86_cpuid_version_set_family, NULL, NULL); > > - object_property_add(obj, "model", "int", > > - x86_cpuid_version_get_model, > > - x86_cpuid_version_set_model, NULL, NULL); > > - object_property_add(obj, "stepping", "int", > > - x86_cpuid_version_get_stepping, > > - x86_cpuid_version_set_stepping, NULL, NULL); > > - object_property_add_str(obj, "vendor", > > - x86_cpuid_get_vendor, > > - x86_cpuid_set_vendor); > > - object_property_add_str(obj, "model-id", > > - x86_cpuid_get_model_id, > > - x86_cpuid_set_model_id); > > - object_property_add(obj, "tsc-frequency", "int", > > - x86_cpuid_get_tsc_freq, > > - x86_cpuid_set_tsc_freq, NULL, NULL); > > > > object_property_add(obj, "feature-words", "X86CPUFeatureWordInfo", > > x86_cpu_get_feature_words, > > NULL, NULL, (void *)env->features); > > object_property_add(obj, "filtered-features", "X86CPUFeatureWordInfo", > > x86_cpu_get_feature_words, > > NULL, NULL, (void *)cpu->filtered_features); > > I'm just curious why these weren't moved as well? Because of the (void*) arguments that need a pointer to the instance. -- Eduardo
On Mon, 21 Sep 2020 18:10:34 -0400 Eduardo Habkost <ehabkost@redhat.com> wrote: > Class properties make QOM introspection simpler and easier, as > they don't require an object to be instantiated. > > Signed-off-by: Eduardo Habkost <ehabkost@redhat.com> Reviewed-by: Igor Mammedov <imammedo@redhat.com> > --- > Cc: Paolo Bonzini <pbonzini@redhat.com> > Cc: Richard Henderson <rth@twiddle.net> > Cc: Eduardo Habkost <ehabkost@redhat.com> > Cc: qemu-devel@nongnu.org > --- > target/i386/cpu.c | 66 ++++++++++++++++++++++++----------------------- > 1 file changed, 34 insertions(+), 32 deletions(-) > > diff --git a/target/i386/cpu.c b/target/i386/cpu.c > index 1c58f764dcb..66792f28ba7 100644 > --- a/target/i386/cpu.c > +++ b/target/i386/cpu.c > @@ -6922,44 +6922,12 @@ static void x86_cpu_initfn(Object *obj) > env->nr_dies = 1; > cpu_set_cpustate_pointers(cpu); > > - object_property_add(obj, "family", "int", > - x86_cpuid_version_get_family, > - x86_cpuid_version_set_family, NULL, NULL); > - object_property_add(obj, "model", "int", > - x86_cpuid_version_get_model, > - x86_cpuid_version_set_model, NULL, NULL); > - object_property_add(obj, "stepping", "int", > - x86_cpuid_version_get_stepping, > - x86_cpuid_version_set_stepping, NULL, NULL); > - object_property_add_str(obj, "vendor", > - x86_cpuid_get_vendor, > - x86_cpuid_set_vendor); > - object_property_add_str(obj, "model-id", > - x86_cpuid_get_model_id, > - x86_cpuid_set_model_id); > - object_property_add(obj, "tsc-frequency", "int", > - x86_cpuid_get_tsc_freq, > - x86_cpuid_set_tsc_freq, NULL, NULL); > object_property_add(obj, "feature-words", "X86CPUFeatureWordInfo", > x86_cpu_get_feature_words, > NULL, NULL, (void *)env->features); > object_property_add(obj, "filtered-features", "X86CPUFeatureWordInfo", > x86_cpu_get_feature_words, > NULL, NULL, (void *)cpu->filtered_features); > - /* > - * The "unavailable-features" property has the same semantics as > - * CpuDefinitionInfo.unavailable-features on the "query-cpu-definitions" > - * QMP command: they list the features that would have prevented the > - * CPU from running if the "enforce" flag was set. > - */ > - object_property_add(obj, "unavailable-features", "strList", > - x86_cpu_get_unavailable_features, > - NULL, NULL, NULL); > - > -#if !defined(CONFIG_USER_ONLY) > - object_property_add(obj, "crash-information", "GuestPanicInformation", > - x86_cpu_get_crash_info_qom, NULL, NULL, NULL); > -#endif > > for (w = 0; w < FEATURE_WORDS; w++) { > int bitnr; > @@ -7308,6 +7276,40 @@ static void x86_cpu_common_class_init(ObjectClass *oc, void *data) > cc->disas_set_info = x86_disas_set_info; > > dc->user_creatable = true; > + > + object_class_property_add(oc, "family", "int", > + x86_cpuid_version_get_family, > + x86_cpuid_version_set_family, NULL, NULL); > + object_class_property_add(oc, "model", "int", > + x86_cpuid_version_get_model, > + x86_cpuid_version_set_model, NULL, NULL); > + object_class_property_add(oc, "stepping", "int", > + x86_cpuid_version_get_stepping, > + x86_cpuid_version_set_stepping, NULL, NULL); > + object_class_property_add_str(oc, "vendor", > + x86_cpuid_get_vendor, > + x86_cpuid_set_vendor); > + object_class_property_add_str(oc, "model-id", > + x86_cpuid_get_model_id, > + x86_cpuid_set_model_id); > + object_class_property_add(oc, "tsc-frequency", "int", > + x86_cpuid_get_tsc_freq, > + x86_cpuid_set_tsc_freq, NULL, NULL); > + /* > + * The "unavailable-features" property has the same semantics as > + * CpuDefinitionInfo.unavailable-features on the "query-cpu-definitions" > + * QMP command: they list the features that would have prevented the > + * CPU from running if the "enforce" flag was set. > + */ > + object_class_property_add(oc, "unavailable-features", "strList", > + x86_cpu_get_unavailable_features, > + NULL, NULL, NULL); > + > +#if !defined(CONFIG_USER_ONLY) > + object_class_property_add(oc, "crash-information", "GuestPanicInformation", > + x86_cpu_get_crash_info_qom, NULL, NULL, NULL); > +#endif > + > } > > static const TypeInfo x86_cpu_type_info = {
diff --git a/target/i386/cpu.c b/target/i386/cpu.c index 1c58f764dcb..66792f28ba7 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -6922,44 +6922,12 @@ static void x86_cpu_initfn(Object *obj) env->nr_dies = 1; cpu_set_cpustate_pointers(cpu); - object_property_add(obj, "family", "int", - x86_cpuid_version_get_family, - x86_cpuid_version_set_family, NULL, NULL); - object_property_add(obj, "model", "int", - x86_cpuid_version_get_model, - x86_cpuid_version_set_model, NULL, NULL); - object_property_add(obj, "stepping", "int", - x86_cpuid_version_get_stepping, - x86_cpuid_version_set_stepping, NULL, NULL); - object_property_add_str(obj, "vendor", - x86_cpuid_get_vendor, - x86_cpuid_set_vendor); - object_property_add_str(obj, "model-id", - x86_cpuid_get_model_id, - x86_cpuid_set_model_id); - object_property_add(obj, "tsc-frequency", "int", - x86_cpuid_get_tsc_freq, - x86_cpuid_set_tsc_freq, NULL, NULL); object_property_add(obj, "feature-words", "X86CPUFeatureWordInfo", x86_cpu_get_feature_words, NULL, NULL, (void *)env->features); object_property_add(obj, "filtered-features", "X86CPUFeatureWordInfo", x86_cpu_get_feature_words, NULL, NULL, (void *)cpu->filtered_features); - /* - * The "unavailable-features" property has the same semantics as - * CpuDefinitionInfo.unavailable-features on the "query-cpu-definitions" - * QMP command: they list the features that would have prevented the - * CPU from running if the "enforce" flag was set. - */ - object_property_add(obj, "unavailable-features", "strList", - x86_cpu_get_unavailable_features, - NULL, NULL, NULL); - -#if !defined(CONFIG_USER_ONLY) - object_property_add(obj, "crash-information", "GuestPanicInformation", - x86_cpu_get_crash_info_qom, NULL, NULL, NULL); -#endif for (w = 0; w < FEATURE_WORDS; w++) { int bitnr; @@ -7308,6 +7276,40 @@ static void x86_cpu_common_class_init(ObjectClass *oc, void *data) cc->disas_set_info = x86_disas_set_info; dc->user_creatable = true; + + object_class_property_add(oc, "family", "int", + x86_cpuid_version_get_family, + x86_cpuid_version_set_family, NULL, NULL); + object_class_property_add(oc, "model", "int", + x86_cpuid_version_get_model, + x86_cpuid_version_set_model, NULL, NULL); + object_class_property_add(oc, "stepping", "int", + x86_cpuid_version_get_stepping, + x86_cpuid_version_set_stepping, NULL, NULL); + object_class_property_add_str(oc, "vendor", + x86_cpuid_get_vendor, + x86_cpuid_set_vendor); + object_class_property_add_str(oc, "model-id", + x86_cpuid_get_model_id, + x86_cpuid_set_model_id); + object_class_property_add(oc, "tsc-frequency", "int", + x86_cpuid_get_tsc_freq, + x86_cpuid_set_tsc_freq, NULL, NULL); + /* + * The "unavailable-features" property has the same semantics as + * CpuDefinitionInfo.unavailable-features on the "query-cpu-definitions" + * QMP command: they list the features that would have prevented the + * CPU from running if the "enforce" flag was set. + */ + object_class_property_add(oc, "unavailable-features", "strList", + x86_cpu_get_unavailable_features, + NULL, NULL, NULL); + +#if !defined(CONFIG_USER_ONLY) + object_class_property_add(oc, "crash-information", "GuestPanicInformation", + x86_cpu_get_crash_info_qom, NULL, NULL, NULL); +#endif + } static const TypeInfo x86_cpu_type_info = {
Class properties make QOM introspection simpler and easier, as they don't require an object to be instantiated. Signed-off-by: Eduardo Habkost <ehabkost@redhat.com> --- Cc: Paolo Bonzini <pbonzini@redhat.com> Cc: Richard Henderson <rth@twiddle.net> Cc: Eduardo Habkost <ehabkost@redhat.com> Cc: qemu-devel@nongnu.org --- target/i386/cpu.c | 66 ++++++++++++++++++++++++----------------------- 1 file changed, 34 insertions(+), 32 deletions(-)