diff options
author | Marc-André Lureau | 2020-01-10 16:30:34 +0100 |
---|---|---|
committer | Paolo Bonzini | 2020-01-24 20:59:16 +0100 |
commit | 77b06bba62034a87cc61a9c8de1309ae3e527d97 (patch) | |
tree | 31644878066667339e6adb57fe026b74cdb78a5a /hw/core/qdev-properties.c | |
parent | qdev: move instance properties to class properties (diff) | |
download | qemu-77b06bba62034a87cc61a9c8de1309ae3e527d97.tar.gz qemu-77b06bba62034a87cc61a9c8de1309ae3e527d97.tar.xz qemu-77b06bba62034a87cc61a9c8de1309ae3e527d97.zip |
qdev: register properties as class properties
Use class properties facilities to add properties to the class during
device_class_set_props().
qdev_property_add_static() must be adapted as PropertyInfo now
operates with classes (and not instances), so we must
set_default_value() on the ObjectProperty, before calling its init()
method on the object instance.
Also, PropertyInfo.create() is now exclusively used for class
properties. Fortunately, qdev_property_add_static() is only used in
target/arm/cpu.c so far, which doesn't use "link" properties (that
require create()).
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-Id: <20200110153039.1379601-22-marcandre.lureau@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'hw/core/qdev-properties.c')
-rw-r--r-- | hw/core/qdev-properties.c | 38 |
1 files changed, 17 insertions, 21 deletions
diff --git a/hw/core/qdev-properties.c b/hw/core/qdev-properties.c index 43a915327b..7f93bfeb88 100644 --- a/hw/core/qdev-properties.c +++ b/hw/core/qdev-properties.c @@ -73,12 +73,10 @@ static void set_enum(Object *obj, Visitor *v, const char *name, void *opaque, visit_type_enum(v, prop->name, ptr, prop->info->enum_table, errp); } -static void set_default_value_enum(Object *obj, const Property *prop) +static void set_default_value_enum(ObjectProperty *op, const Property *prop) { - object_property_set_str(obj, - qapi_enum_lookup(prop->info->enum_table, - prop->defval.i), - prop->name, &error_abort); + object_property_set_default_str(op, + qapi_enum_lookup(prop->info->enum_table, prop->defval.i)); } /* Bit */ @@ -132,9 +130,9 @@ static void prop_set_bit(Object *obj, Visitor *v, const char *name, bit_prop_set(dev, prop, value); } -static void set_default_value_bool(Object *obj, const Property *prop) +static void set_default_value_bool(ObjectProperty *op, const Property *prop) { - object_property_set_bool(obj, prop->defval.u, prop->name, &error_abort); + object_property_set_default_bool(op, prop->defval.u); } const PropertyInfo qdev_prop_bit = { @@ -265,14 +263,14 @@ static void set_uint8(Object *obj, Visitor *v, const char *name, void *opaque, visit_type_uint8(v, name, ptr, errp); } -static void set_default_value_int(Object *obj, const Property *prop) +static void set_default_value_int(ObjectProperty *op, const Property *prop) { - object_property_set_int(obj, prop->defval.i, prop->name, &error_abort); + object_property_set_default_int(op, prop->defval.i); } -static void set_default_value_uint(Object *obj, const Property *prop) +static void set_default_value_uint(ObjectProperty *op, const Property *prop) { - object_property_set_uint(obj, prop->defval.u, prop->name, &error_abort); + object_property_set_default_uint(op, prop->defval.u); } const PropertyInfo qdev_prop_uint8 = { @@ -925,9 +923,9 @@ static void set_uuid(Object *obj, Visitor *v, const char *name, void *opaque, g_free(str); } -static void set_default_uuid_auto(Object *obj, const Property *prop) +static void set_default_uuid_auto(ObjectProperty *op, const Property *prop) { - object_property_set_str(obj, UUID_VALUE_AUTO, prop->name, &error_abort); + object_property_set_default_str(op, UUID_VALUE_AUTO); } const PropertyInfo qdev_prop_uuid = { @@ -1243,15 +1241,13 @@ const PropertyInfo qdev_prop_size = { /* --- object link property --- */ -static void create_link_property(Object *obj, Property *prop, Error **errp) +static void create_link_property(ObjectClass *oc, Property *prop, Error **errp) { - Object **child = qdev_get_prop_ptr(DEVICE(obj), prop); - - object_property_add_link(obj, prop->name, prop->link_type, - child, - qdev_prop_allow_set_link_before_realize, - OBJ_PROP_LINK_STRONG, - errp); + object_class_property_add_link(oc, prop->name, prop->link_type, + prop->offset, + qdev_prop_allow_set_link_before_realize, + OBJ_PROP_LINK_STRONG, + errp); } const PropertyInfo qdev_prop_link = { |