From: Ruslan Ruslichenko <Ruslan_Ruslichenko@epam.com>
Add a helper function to retrieve the element type of a qdev
array property.
This is required to initialize objects from a HW device tree,
as neither device tree properties nor object's property array
reveal underlying property type.
Signed-off-by: Ruslan Ruslichenko <Ruslan_Ruslichenko@epam.com>
---
hw/core/qdev-properties.c | 12 ++++++++++++
include/hw/core/qdev-properties.h | 1 +
2 files changed, 13 insertions(+)
diff --git a/hw/core/qdev-properties.c b/hw/core/qdev-properties.c
index ba8461e9a4..f92ccc35d8 100644
--- a/hw/core/qdev-properties.c
+++ b/hw/core/qdev-properties.c
@@ -950,6 +950,18 @@ void qdev_prop_set_array(DeviceState *dev, const char *name, QList *values)
qobject_unref(values);
}
+const char *qdev_prop_get_array_elem_type(DeviceState *dev, const char *name)
+{
+ const Property *prop;
+
+ prop = qdev_prop_find(dev, name);
+ if (!prop || prop->info != &qdev_prop_array) {
+ return NULL;
+ }
+
+ return prop->arrayinfo->type;
+}
+
static GPtrArray *global_props(void)
{
static GPtrArray *gp;
diff --git a/include/hw/core/qdev-properties.h b/include/hw/core/qdev-properties.h
index d8745d4c65..19fed85248 100644
--- a/include/hw/core/qdev-properties.h
+++ b/include/hw/core/qdev-properties.h
@@ -218,6 +218,7 @@ void qdev_prop_set_enum(DeviceState *dev, const char *name, int value);
/* Takes ownership of @values */
void qdev_prop_set_array(DeviceState *dev, const char *name, QList *values);
+const char *qdev_prop_get_array_elem_type(DeviceState *dev, const char *name);
void *object_field_prop_ptr(Object *obj, const Property *prop);
--
2.43.0