]> git.proxmox.com Git - qemu.git/commitdiff
qdev: Introduce qdev_prop_set_globals_for_type()
authorAndreas Färber <afaerber@suse.de>
Wed, 1 May 2013 14:03:19 +0000 (16:03 +0200)
committerAndreas Färber <afaerber@suse.de>
Mon, 6 May 2013 17:50:52 +0000 (19:50 +0200)
Reuse it in qdev_prop_set_globals().

Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
[AF: Renamed from qdev_prop_set_custom_globals()]
Signed-off-by: Andreas Färber <afaerber@suse.de>
hw/core/qdev-properties.c
include/hw/qdev-properties.h

index 716ba19a3c41a06917d092c817bb9ccb74d9102e..3a324fb0c312cae727aabb7aac759fe1b2bcc118 100644 (file)
@@ -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);
index 38469d45a7e714798a083818c01fa6efa18b33fc..39448b716c9795f981d822ccaf3de06488707a17 100644 (file)
@@ -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);