From 868d378bb087c6003bfa0e431aec0e5871a90ff4 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Andreas=20F=C3=A4rber?= Date: Wed, 1 May 2013 16:03:19 +0200 Subject: [PATCH] qdev: Introduce qdev_prop_set_globals_for_type() MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Reuse it in qdev_prop_set_globals(). Reviewed-by: Eduardo Habkost [AF: Renamed from qdev_prop_set_custom_globals()] Signed-off-by: Andreas Färber --- hw/core/qdev-properties.c | 36 +++++++++++++++++++++++++----------- include/hw/qdev-properties.h | 2 ++ 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/hw/core/qdev-properties.c b/hw/core/qdev-properties.c index 716ba19a3c..3a324fb0c3 100644 --- a/hw/core/qdev-properties.c +++ b/hw/core/qdev-properties.c @@ -1099,23 +1099,37 @@ void qdev_prop_register_global_list(GlobalProperty *props) } } +void qdev_prop_set_globals_for_type(DeviceState *dev, const char *typename, + Error **errp) +{ + GlobalProperty *prop; + + QTAILQ_FOREACH(prop, &global_props, next) { + Error *err = NULL; + + if (strcmp(typename, prop->driver) != 0) { + continue; + } + qdev_prop_parse(dev, prop->property, prop->value, &err); + if (err != NULL) { + error_propagate(errp, err); + return; + } + } +} + void qdev_prop_set_globals(DeviceState *dev, Error **errp) { ObjectClass *class = object_get_class(OBJECT(dev)); do { - GlobalProperty *prop; - QTAILQ_FOREACH(prop, &global_props, next) { - Error *err = NULL; + Error *err = NULL; - if (strcmp(object_class_get_name(class), prop->driver) != 0) { - continue; - } - qdev_prop_parse(dev, prop->property, prop->value, &err); - if (err != NULL) { - error_propagate(errp, err); - return; - } + qdev_prop_set_globals_for_type(dev, object_class_get_name(class), + &err); + if (err != NULL) { + error_propagate(errp, err); + return; } class = object_class_get_parent(class); } while (class); diff --git a/include/hw/qdev-properties.h b/include/hw/qdev-properties.h index 38469d45a7..39448b716c 100644 --- a/include/hw/qdev-properties.h +++ b/include/hw/qdev-properties.h @@ -169,6 +169,8 @@ void qdev_prop_set_ptr(DeviceState *dev, const char *name, void *value); void qdev_prop_register_global(GlobalProperty *prop); void qdev_prop_register_global_list(GlobalProperty *props); void qdev_prop_set_globals(DeviceState *dev, Error **errp); +void qdev_prop_set_globals_for_type(DeviceState *dev, const char *typename, + Error **errp); void error_set_from_qdev_prop_error(Error **errp, int ret, DeviceState *dev, Property *prop, const char *value); -- 2.11.0