diff --git a/include/param.h b/include/param.h index 3c881d7..4af2d09 100644 --- a/include/param.h +++ b/include/param.h @@ -50,7 +50,7 @@ int dev_add_param_fixed(struct device_d *dev, char *name, char *value); -void dev_remove_param(struct device_d *dev, char *name); +void dev_remove_param(struct param_d *p); void dev_remove_parameters(struct device_d *dev); @@ -116,7 +116,7 @@ return 0; } -static inline void dev_remove_param(struct device_d *dev, char *name) {} +static inline void dev_remove_param(struct param_d *p) {} static inline void dev_remove_parameters(struct device_d *dev) {} diff --git a/lib/parameter.c b/lib/parameter.c index 97105db..e47e8b9 100644 --- a/lib/parameter.c +++ b/lib/parameter.c @@ -444,19 +444,14 @@ /** * dev_remove_param - remove a parameter from a device and free its * memory - * @param dev The device - * @param name The name of the parameter + * @param p The parameter */ -void dev_remove_param(struct device_d *dev, char *name) +void dev_remove_param(struct param_d *p) { - struct param_d *p = get_param_by_name(dev, name); - - if (p) { - p->set(dev, p, NULL); - list_del(&p->list); - free(p->name); - free(p); - } + p->set(p->dev, p, NULL); + list_del(&p->list); + free(p->name); + free(p); } /**