Messages in this thread | | | From | Rusty Russell <> | Subject | Re: [PATCH 5/5] params: improve standard definitions | Date | Thu, 21 Nov 2013 12:13:35 +1030 |
| |
Felipe Contreras <felipe.contreras@gmail.com> writes: > We are repeating the functionality of kstrtol in param_set_long, and the > same for kstrtoint. We can get rid of the extra code by using the right > functions. > > Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
Thanks, they're new since this code was written. I didn't know about them...
Applied! Rusty.
> --- > kernel/params.c | 25 +++++++++---------------- > 1 file changed, 9 insertions(+), 16 deletions(-) > > diff --git a/kernel/params.c b/kernel/params.c > index c00d5b5..48e1a81 100644 > --- a/kernel/params.c > +++ b/kernel/params.c > @@ -227,17 +227,10 @@ int parse_args(const char *doing, > } > > /* Lazy bastard, eh? */ > -#define STANDARD_PARAM_DEF(name, type, format, tmptype, strtolfn) \ > +#define STANDARD_PARAM_DEF(name, type, format, strtolfn) \ > int param_set_##name(const char *val, const struct kernel_param *kp) \ > { \ > - tmptype l; \ > - int ret; \ > - \ > - ret = strtolfn(val, 0, &l); \ > - if (ret < 0 || ((type)l != l)) \ > - return ret < 0 ? ret : -EINVAL; \ > - *((type *)kp->arg) = l; \ > - return 0; \ > + return strtolfn(val, 0, (type *)kp->arg); \ > } \ > int param_get_##name(char *buffer, const struct kernel_param *kp) \ > { \ > @@ -253,13 +246,13 @@ int parse_args(const char *doing, > EXPORT_SYMBOL(param_ops_##name) > > > -STANDARD_PARAM_DEF(byte, unsigned char, "%hhu", unsigned long, kstrtoul); > -STANDARD_PARAM_DEF(short, short, "%hi", long, kstrtol); > -STANDARD_PARAM_DEF(ushort, unsigned short, "%hu", unsigned long, kstrtoul); > -STANDARD_PARAM_DEF(int, int, "%i", long, kstrtol); > -STANDARD_PARAM_DEF(uint, unsigned int, "%u", unsigned long, kstrtoul); > -STANDARD_PARAM_DEF(long, long, "%li", long, kstrtol); > -STANDARD_PARAM_DEF(ulong, unsigned long, "%lu", unsigned long, kstrtoul); > +STANDARD_PARAM_DEF(byte, unsigned char, "%hhu", kstrtou8); > +STANDARD_PARAM_DEF(short, short, "%hi", kstrtos16); > +STANDARD_PARAM_DEF(ushort, unsigned short, "%hu", kstrtou16); > +STANDARD_PARAM_DEF(int, int, "%i", kstrtoint); > +STANDARD_PARAM_DEF(uint, unsigned int, "%u", kstrtouint); > +STANDARD_PARAM_DEF(long, long, "%li", kstrtol); > +STANDARD_PARAM_DEF(ulong, unsigned long, "%lu", kstrtoul); > > int param_set_charp(const char *val, const struct kernel_param *kp) > { > -- > 1.8.4.2+fc1
| |