On Fri, 11 Dec 2020 17:05:11 -0500 Eduardo Habkost <ehabk...@redhat.com> wrote:
> Only softmmu code uses DEFINE_PROP_UUID, and it currently depends > on error_set_from_qdev_prop_error(). Move it to > qdev-properties-system.c to get out of our way when refactoring > the qdev property system. > > We can eventually move it back to the core property system later, > after removing usage of error_set_from_qdev_prop_error(). > > Signed-off-by: Eduardo Habkost <ehabk...@redhat.com> Reviewed-by: Igor Mammedov <imamm...@redhat.com> > --- > This is a new patch added in series v2 > --- > Cc: Paolo Bonzini <pbonz...@redhat.com> > Cc: "Daniel P. Berrangé" <berra...@redhat.com> > Cc: Eduardo Habkost <ehabk...@redhat.com> > Cc: qemu-devel@nongnu.org > --- > hw/core/qdev-properties-system.c | 57 ++++++++++++++++++++++++++++++++ > hw/core/qdev-properties.c | 57 -------------------------------- > 2 files changed, 57 insertions(+), 57 deletions(-) > > diff --git a/hw/core/qdev-properties-system.c > b/hw/core/qdev-properties-system.c > index 5796ed2619..7a9a1d6404 100644 > --- a/hw/core/qdev-properties-system.c > +++ b/hw/core/qdev-properties-system.c > @@ -21,6 +21,7 @@ > #include "qemu/ctype.h" > #include "qemu/cutils.h" > #include "qemu/units.h" > +#include "qemu/uuid.h" > #include "qemu/error-report.h" > #include "qdev-prop-internal.h" > > @@ -1106,3 +1107,59 @@ const PropertyInfo qdev_prop_pcie_link_width = { > .set = set_prop_pcielinkwidth, > .set_default_value = qdev_propinfo_set_default_value_enum, > }; > + > +/* --- UUID --- */ > + > +static void get_uuid(Object *obj, Visitor *v, const char *name, void *opaque, > + Error **errp) > +{ > + Property *prop = opaque; > + QemuUUID *uuid = qdev_get_prop_ptr(obj, prop); > + char buffer[UUID_FMT_LEN + 1]; > + char *p = buffer; > + > + qemu_uuid_unparse(uuid, buffer); > + > + visit_type_str(v, name, &p, errp); > +} > + > +#define UUID_VALUE_AUTO "auto" > + > +static void set_uuid(Object *obj, Visitor *v, const char *name, void *opaque, > + Error **errp) > +{ > + DeviceState *dev = DEVICE(obj); > + Property *prop = opaque; > + QemuUUID *uuid = qdev_get_prop_ptr(obj, prop); > + char *str; > + > + if (dev->realized) { > + qdev_prop_set_after_realize(dev, name, errp); > + return; > + } > + > + if (!visit_type_str(v, name, &str, errp)) { > + return; > + } > + > + if (!strcmp(str, UUID_VALUE_AUTO)) { > + qemu_uuid_generate(uuid); > + } else if (qemu_uuid_parse(str, uuid) < 0) { > + error_set_from_qdev_prop_error(errp, EINVAL, obj, prop, str); > + } > + g_free(str); > +} > + > +static void set_default_uuid_auto(ObjectProperty *op, const Property *prop) > +{ > + object_property_set_default_str(op, UUID_VALUE_AUTO); > +} > + > +const PropertyInfo qdev_prop_uuid = { > + .name = "str", > + .description = "UUID (aka GUID) or \"" UUID_VALUE_AUTO > + "\" for random value (default)", > + .get = get_uuid, > + .set = set_uuid, > + .set_default_value = set_default_uuid_auto, > +}; > diff --git a/hw/core/qdev-properties.c b/hw/core/qdev-properties.c > index 765e916c23..a2eaa43831 100644 > --- a/hw/core/qdev-properties.c > +++ b/hw/core/qdev-properties.c > @@ -6,7 +6,6 @@ > #include "qemu/ctype.h" > #include "qemu/error-report.h" > #include "qapi/visitor.h" > -#include "qemu/uuid.h" > #include "qemu/units.h" > #include "qemu/cutils.h" > #include "qdev-prop-internal.h" > @@ -544,62 +543,6 @@ const PropertyInfo qdev_prop_size32 = { > .set_default_value = qdev_propinfo_set_default_value_uint, > }; > > -/* --- UUID --- */ > - > -static void get_uuid(Object *obj, Visitor *v, const char *name, void *opaque, > - Error **errp) > -{ > - Property *prop = opaque; > - QemuUUID *uuid = qdev_get_prop_ptr(obj, prop); > - char buffer[UUID_FMT_LEN + 1]; > - char *p = buffer; > - > - qemu_uuid_unparse(uuid, buffer); > - > - visit_type_str(v, name, &p, errp); > -} > - > -#define UUID_VALUE_AUTO "auto" > - > -static void set_uuid(Object *obj, Visitor *v, const char *name, void *opaque, > - Error **errp) > -{ > - DeviceState *dev = DEVICE(obj); > - Property *prop = opaque; > - QemuUUID *uuid = qdev_get_prop_ptr(obj, prop); > - char *str; > - > - if (dev->realized) { > - qdev_prop_set_after_realize(dev, name, errp); > - return; > - } > - > - if (!visit_type_str(v, name, &str, errp)) { > - return; > - } > - > - if (!strcmp(str, UUID_VALUE_AUTO)) { > - qemu_uuid_generate(uuid); > - } else if (qemu_uuid_parse(str, uuid) < 0) { > - error_set_from_qdev_prop_error(errp, EINVAL, obj, prop, str); > - } > - g_free(str); > -} > - > -static void set_default_uuid_auto(ObjectProperty *op, const Property *prop) > -{ > - object_property_set_default_str(op, UUID_VALUE_AUTO); > -} > - > -const PropertyInfo qdev_prop_uuid = { > - .name = "str", > - .description = "UUID (aka GUID) or \"" UUID_VALUE_AUTO > - "\" for random value (default)", > - .get = get_uuid, > - .set = set_uuid, > - .set_default_value = set_default_uuid_auto, > -}; > - > /* --- support for array properties --- */ > > /* Used as an opaque for the object properties we add for each