Message ID | 1328342577-25732-15-git-send-email-pbonzini@redhat.com |
---|---|
State | New |
Headers | show |
On 02/04/2012 02:02 AM, Paolo Bonzini wrote: > In some cases, a legacy property does need a special print method > but not a special parse method. In this case, we can reuse the get/set > from the static (non-legacy) property. > > If neither parse nor print is needed, though, do not register the > legacy property at all. The previous patch ensures that the right > fallback will be used. > > Signed-off-by: Paolo Bonzini<pbonzini@redhat.com> Reviewed-by: Anthony Liguori <aliguori@us.ibm.com> Regards, Anthony Liguori > --- > hw/qdev.c | 11 +++++++---- > 1 files changed, 7 insertions(+), 4 deletions(-) > > diff --git a/hw/qdev.c b/hw/qdev.c > index a731e41..660ee38 100644 > --- a/hw/qdev.c > +++ b/hw/qdev.c > @@ -550,21 +550,24 @@ static void qdev_set_legacy_property(Object *obj, Visitor *v, void *opaque, > * Do not use this is new code! Properties added through this interface will > * be given names and types in the "legacy" namespace. > * > - * Legacy properties are always processed as strings. The format of the string > - * depends on the property type. > + * Legacy properties are string versions of other OOM properties. The format > + * of the string depends on the property type. > */ > void qdev_property_add_legacy(DeviceState *dev, Property *prop, > Error **errp) > { > gchar *name, *type; > > + if (!prop->info->print&& !prop->info->parse) { > + return; > + } > name = g_strdup_printf("legacy-%s", prop->name); > type = g_strdup_printf("legacy<%s>", > prop->info->legacy_name ?: prop->info->name); > > object_property_add(OBJECT(dev), name, type, > - prop->info->print ? qdev_get_legacy_property : NULL, > - prop->info->parse ? qdev_set_legacy_property : NULL, > + prop->info->print ? qdev_get_legacy_property : prop->info->get, > + prop->info->parse ? qdev_set_legacy_property : prop->info->set, > NULL, > prop, errp); >
diff --git a/hw/qdev.c b/hw/qdev.c index a731e41..660ee38 100644 --- a/hw/qdev.c +++ b/hw/qdev.c @@ -550,21 +550,24 @@ static void qdev_set_legacy_property(Object *obj, Visitor *v, void *opaque, * Do not use this is new code! Properties added through this interface will * be given names and types in the "legacy" namespace. * - * Legacy properties are always processed as strings. The format of the string - * depends on the property type. + * Legacy properties are string versions of other OOM properties. The format + * of the string depends on the property type. */ void qdev_property_add_legacy(DeviceState *dev, Property *prop, Error **errp) { gchar *name, *type; + if (!prop->info->print && !prop->info->parse) { + return; + } name = g_strdup_printf("legacy-%s", prop->name); type = g_strdup_printf("legacy<%s>", prop->info->legacy_name ?: prop->info->name); object_property_add(OBJECT(dev), name, type, - prop->info->print ? qdev_get_legacy_property : NULL, - prop->info->parse ? qdev_set_legacy_property : NULL, + prop->info->print ? qdev_get_legacy_property : prop->info->get, + prop->info->parse ? qdev_set_legacy_property : prop->info->set, NULL, prop, errp);
In some cases, a legacy property does need a special print method but not a special parse method. In this case, we can reuse the get/set from the static (non-legacy) property. If neither parse nor print is needed, though, do not register the legacy property at all. The previous patch ensures that the right fallback will be used. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> --- hw/qdev.c | 11 +++++++---- 1 files changed, 7 insertions(+), 4 deletions(-)