Loading hw/core/qdev-properties.c +25 −11 Original line number Diff line number Diff line Loading @@ -1099,16 +1099,15 @@ 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) { ObjectClass *class = object_get_class(OBJECT(dev)); do { GlobalProperty *prop; QTAILQ_FOREACH(prop, &global_props, next) { Error *err = NULL; if (strcmp(object_class_get_name(class), prop->driver) != 0) { if (strcmp(typename, prop->driver) != 0) { continue; } qdev_prop_parse(dev, prop->property, prop->value, &err); Loading @@ -1117,6 +1116,21 @@ void qdev_prop_set_globals(DeviceState *dev, Error **errp) return; } } } void qdev_prop_set_globals(DeviceState *dev, Error **errp) { ObjectClass *class = object_get_class(OBJECT(dev)); do { Error *err = NULL; 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); } include/hw/qdev-properties.h +2 −0 Original line number Diff line number Diff line Loading @@ -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); Loading Loading
hw/core/qdev-properties.c +25 −11 Original line number Diff line number Diff line Loading @@ -1099,16 +1099,15 @@ 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) { ObjectClass *class = object_get_class(OBJECT(dev)); do { GlobalProperty *prop; QTAILQ_FOREACH(prop, &global_props, next) { Error *err = NULL; if (strcmp(object_class_get_name(class), prop->driver) != 0) { if (strcmp(typename, prop->driver) != 0) { continue; } qdev_prop_parse(dev, prop->property, prop->value, &err); Loading @@ -1117,6 +1116,21 @@ void qdev_prop_set_globals(DeviceState *dev, Error **errp) return; } } } void qdev_prop_set_globals(DeviceState *dev, Error **errp) { ObjectClass *class = object_get_class(OBJECT(dev)); do { Error *err = NULL; 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); }
include/hw/qdev-properties.h +2 −0 Original line number Diff line number Diff line Loading @@ -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); Loading