From: Ruslan Ruslichenko <[email protected]> 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 <[email protected]> --- 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
