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);
- /*
- * 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 = {
--
2.26.2
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 = {
© 2016 - 2026 Red Hat, Inc.