params: improve standard definitions
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> Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
parent
160e01aca3
commit
88a88b320a
@ -227,17 +227,10 @@ int parse_args(const char *doing,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Lazy bastard, eh? */
|
/* 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) \
|
int param_set_##name(const char *val, const struct kernel_param *kp) \
|
||||||
{ \
|
{ \
|
||||||
tmptype l; \
|
return strtolfn(val, 0, (type *)kp->arg); \
|
||||||
int ret; \
|
|
||||||
\
|
|
||||||
ret = strtolfn(val, 0, &l); \
|
|
||||||
if (ret < 0 || ((type)l != l)) \
|
|
||||||
return ret < 0 ? ret : -EINVAL; \
|
|
||||||
*((type *)kp->arg) = l; \
|
|
||||||
return 0; \
|
|
||||||
} \
|
} \
|
||||||
int param_get_##name(char *buffer, const struct kernel_param *kp) \
|
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)
|
EXPORT_SYMBOL(param_ops_##name)
|
||||||
|
|
||||||
|
|
||||||
STANDARD_PARAM_DEF(byte, unsigned char, "%hhu", unsigned long, kstrtoul);
|
STANDARD_PARAM_DEF(byte, unsigned char, "%hhu", kstrtou8);
|
||||||
STANDARD_PARAM_DEF(short, short, "%hi", long, kstrtol);
|
STANDARD_PARAM_DEF(short, short, "%hi", kstrtos16);
|
||||||
STANDARD_PARAM_DEF(ushort, unsigned short, "%hu", unsigned long, kstrtoul);
|
STANDARD_PARAM_DEF(ushort, unsigned short, "%hu", kstrtou16);
|
||||||
STANDARD_PARAM_DEF(int, int, "%i", long, kstrtol);
|
STANDARD_PARAM_DEF(int, int, "%i", kstrtoint);
|
||||||
STANDARD_PARAM_DEF(uint, unsigned int, "%u", unsigned long, kstrtoul);
|
STANDARD_PARAM_DEF(uint, unsigned int, "%u", kstrtouint);
|
||||||
STANDARD_PARAM_DEF(long, long, "%li", long, kstrtol);
|
STANDARD_PARAM_DEF(long, long, "%li", kstrtol);
|
||||||
STANDARD_PARAM_DEF(ulong, unsigned long, "%lu", unsigned long, kstrtoul);
|
STANDARD_PARAM_DEF(ulong, unsigned long, "%lu", kstrtoul);
|
||||||
|
|
||||||
int param_set_charp(const char *val, const struct kernel_param *kp)
|
int param_set_charp(const char *val, const struct kernel_param *kp)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user