[PATCH 5/5] params: improve standard definitions

2013-11-16 Thread Felipe Contreras
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 
---
 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, ); \
-   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

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH 5/5] params: improve standard definitions

2013-11-16 Thread Felipe Contreras
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.contre...@gmail.com
---
 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

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/