@@ -63,14 +63,11 @@ extern const PropertyInfo qdev_prop_pcie_link_width;
DEFINE_PROP_SIGNED(_n, _s, _f, _d, qdev_prop_pcie_link_width, \
PCIExpLinkWidth)
+#define UUID_VALUE_AUTO "auto"
+
#define DEFINE_PROP_UUID(_name, _state, _field) \
DEFINE_PROP(_name, _state, _field, qdev_prop_uuid, QemuUUID, \
- /* \
- * Note that set_default_uuid_auto() currently \
- * ignores the actual value value of .defval, \
- * we just need it to not be not QTYPE_NONE \
- */ \
- .defval = QLIT_QNULL)
+ .defval = QLIT_QSTR(UUID_VALUE_AUTO))
#define DEFINE_PROP_AUDIODEV(_n, _s, _f) \
DEFINE_PROP(_n, _s, _f, qdev_prop_audiodev, QEMUSoundCard)
@@ -15,6 +15,7 @@
#include "hw/qdev-properties-system.h"
#include "qapi/error.h"
#include "qapi/visitor.h"
+#include "qapi/qmp/qstring.h"
#include "qapi/qapi-types-block.h"
#include "qapi/qapi-types-machine.h"
#include "qapi/qapi-types-migration.h"
@@ -1059,8 +1060,6 @@ static void get_uuid(Object *obj, Visitor *v, const char *name, void *opaque,
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)
{
@@ -1080,10 +1079,11 @@ static void set_uuid(Object *obj, Visitor *v, const char *name, void *opaque,
g_free(str);
}
-static void set_default_uuid_auto(ObjectProperty *op, const Property *prop,
+static void set_default_uuid(ObjectProperty *op, const Property *prop,
const QObject *defval)
{
- object_property_set_default_str(op, UUID_VALUE_AUTO);
+ QString *qs = qobject_to(QString, defval);
+ object_property_set_default_str(op, qstring_get_str(qs));
}
const PropertyInfo qdev_prop_uuid = {
@@ -1092,5 +1092,5 @@ const PropertyInfo qdev_prop_uuid = {
"\" for random value",
.get = get_uuid,
.set = set_uuid,
- .set_default_value = set_default_uuid_auto,
+ .set_default_value = set_default_uuid,
};
UUID properties were weird because the value of .defval was completely ignored. Fix this by setting the default value to QLIT_QSTR("auto") on the default case, and actually using .defval inside .set_default_value. Signed-off-by: Eduardo Habkost <ehabkost@redhat.com> --- This is a new patch added in v3 of this series. This is similar (but not completely the same) to changes that were submitted as part of "[PATCH v2 8/8] qom: Use qlit to represent property defaults". --- include/hw/qdev-properties-system.h | 9 +++------ hw/core/qdev-properties-system.c | 10 +++++----- 2 files changed, 8 insertions(+), 11 deletions(-)