qdev: Remove qdev_prop_set_defaults
Instead, qdev_property_add_static can set the default. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Reviewed-by: Anthony Liguori <aliguori@us.ibm.com> Signed-off-by: Andreas Färber <afaerber@suse.de>
This commit is contained in:
		
							parent
							
								
									4b3582b06b
								
							
						
					
					
						commit
						fdae245f56
					
				| 
						 | 
				
			
			@ -1106,28 +1106,6 @@ void qdev_prop_set_ptr(DeviceState *dev, const char *name, void *value)
 | 
			
		|||
    *ptr = value;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void qdev_prop_set_defaults(DeviceState *dev, Property *props)
 | 
			
		||||
{
 | 
			
		||||
    Object *obj = OBJECT(dev);
 | 
			
		||||
    if (!props)
 | 
			
		||||
        return;
 | 
			
		||||
    for (; props->name; props++) {
 | 
			
		||||
        Error *errp = NULL;
 | 
			
		||||
        if (props->qtype == QTYPE_NONE) {
 | 
			
		||||
            continue;
 | 
			
		||||
        }
 | 
			
		||||
        if (props->qtype == QTYPE_QBOOL) {
 | 
			
		||||
            object_property_set_bool(obj, props->defval, props->name, &errp);
 | 
			
		||||
        } else if (props->info->enum_table) {
 | 
			
		||||
            object_property_set_str(obj, props->info->enum_table[props->defval],
 | 
			
		||||
                                    props->name, &errp);
 | 
			
		||||
        } else if (props->qtype == QTYPE_QINT) {
 | 
			
		||||
            object_property_set_int(obj, props->defval, props->name, &errp);
 | 
			
		||||
        }
 | 
			
		||||
        assert_no_error(errp);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static QTAILQ_HEAD(, GlobalProperty) global_props = QTAILQ_HEAD_INITIALIZER(global_props);
 | 
			
		||||
 | 
			
		||||
static void qdev_prop_register_global(GlobalProperty *prop)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										26
									
								
								hw/qdev.c
								
								
								
								
							
							
						
						
									
										26
									
								
								hw/qdev.c
								
								
								
								
							| 
						 | 
				
			
			@ -579,6 +579,9 @@ void qdev_property_add_legacy(DeviceState *dev, Property *prop,
 | 
			
		|||
void qdev_property_add_static(DeviceState *dev, Property *prop,
 | 
			
		||||
                              Error **errp)
 | 
			
		||||
{
 | 
			
		||||
    Error *local_err = NULL;
 | 
			
		||||
    Object *obj = OBJECT(dev);
 | 
			
		||||
 | 
			
		||||
    /*
 | 
			
		||||
     * TODO qdev_prop_ptr does not have getters or setters.  It must
 | 
			
		||||
     * go now that it can be replaced with links.  The test should be
 | 
			
		||||
| 
						 | 
				
			
			@ -588,10 +591,28 @@ void qdev_property_add_static(DeviceState *dev, Property *prop,
 | 
			
		|||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    object_property_add(OBJECT(dev), prop->name, prop->info->name,
 | 
			
		||||
    object_property_add(obj, prop->name, prop->info->name,
 | 
			
		||||
                        prop->info->get, prop->info->set,
 | 
			
		||||
                        prop->info->release,
 | 
			
		||||
                        prop, errp);
 | 
			
		||||
                        prop, &local_err);
 | 
			
		||||
 | 
			
		||||
    if (local_err) {
 | 
			
		||||
        error_propagate(errp, local_err);
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
    if (prop->qtype == QTYPE_NONE) {
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (prop->qtype == QTYPE_QBOOL) {
 | 
			
		||||
        object_property_set_bool(obj, prop->defval, prop->name, &local_err);
 | 
			
		||||
    } else if (prop->info->enum_table) {
 | 
			
		||||
        object_property_set_str(obj, prop->info->enum_table[prop->defval],
 | 
			
		||||
                                prop->name, &local_err);
 | 
			
		||||
    } else if (prop->qtype == QTYPE_QINT) {
 | 
			
		||||
        object_property_set_int(obj, prop->defval, prop->name, &local_err);
 | 
			
		||||
    }
 | 
			
		||||
    assert_no_error(local_err);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void device_initfn(Object *obj)
 | 
			
		||||
| 
						 | 
				
			
			@ -614,7 +635,6 @@ static void device_initfn(Object *obj)
 | 
			
		|||
            qdev_property_add_legacy(dev, prop, NULL);
 | 
			
		||||
            qdev_property_add_static(dev, prop, NULL);
 | 
			
		||||
        }
 | 
			
		||||
        qdev_prop_set_defaults(dev, DEVICE_CLASS(class)->props);
 | 
			
		||||
        class = object_class_get_parent(class);
 | 
			
		||||
    } while (class != object_class_by_name(TYPE_DEVICE));
 | 
			
		||||
    qdev_prop_set_globals(dev);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -309,7 +309,6 @@ void qdev_prop_set_macaddr(DeviceState *dev, const char *name, uint8_t *value);
 | 
			
		|||
void qdev_prop_set_enum(DeviceState *dev, const char *name, int value);
 | 
			
		||||
/* FIXME: Remove opaque pointer properties.  */
 | 
			
		||||
void qdev_prop_set_ptr(DeviceState *dev, const char *name, void *value);
 | 
			
		||||
void qdev_prop_set_defaults(DeviceState *dev, Property *props);
 | 
			
		||||
 | 
			
		||||
void qdev_prop_register_global_list(GlobalProperty *props);
 | 
			
		||||
void qdev_prop_set_globals(DeviceState *dev);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue