module: Add flag to allow mod params to have no arguments
[linux-2.6-block.git] / kernel / params.c
index 53b958fcd639eb2d93d9bed73cffbb9250df7c06..ec4299cfade86b408e168837cbbb59154dc2b898 100644 (file)
@@ -103,8 +103,8 @@ static int parse_one(char *param,
                            || params[i].level > max_level)
                                return 0;
                        /* No one handled NULL, so do it here. */
-                       if (!val && params[i].ops->set != param_set_bool
-                           && params[i].ops->set != param_set_bint)
+                       if (!val &&
+                           !(params[i].ops->flags & KERNEL_PARAM_FL_NOARG))
                                return -EINVAL;
                        pr_debug("handling %s with %p\n", param,
                                params[i].ops->set);
@@ -252,7 +252,7 @@ int parse_args(const char *doing,
        EXPORT_SYMBOL(param_ops_##name)
 
 
-STANDARD_PARAM_DEF(byte, unsigned char, "%c", unsigned long, strict_strtoul);
+STANDARD_PARAM_DEF(byte, unsigned char, "%hhu", unsigned long, strict_strtoul);
 STANDARD_PARAM_DEF(short, short, "%hi", long, strict_strtol);
 STANDARD_PARAM_DEF(ushort, unsigned short, "%hu", unsigned long, strict_strtoul);
 STANDARD_PARAM_DEF(int, int, "%i", long, strict_strtol);
@@ -320,6 +320,7 @@ int param_get_bool(char *buffer, const struct kernel_param *kp)
 EXPORT_SYMBOL(param_get_bool);
 
 struct kernel_param_ops param_ops_bool = {
+       .flags = KERNEL_PARAM_FL_NOARG,
        .set = param_set_bool,
        .get = param_get_bool,
 };
@@ -370,6 +371,7 @@ int param_set_bint(const char *val, const struct kernel_param *kp)
 EXPORT_SYMBOL(param_set_bint);
 
 struct kernel_param_ops param_ops_bint = {
+       .flags = KERNEL_PARAM_FL_NOARG,
        .set = param_set_bint,
        .get = param_get_int,
 };
@@ -787,7 +789,7 @@ static void __init kernel_add_sysfs_param(const char *name,
 }
 
 /*
- * param_sysfs_builtin - add contents in /sys/parameters for built-in modules
+ * param_sysfs_builtin - add sysfs parameters for built-in modules
  *
  * Add module_parameters to sysfs for "modules" built into the kernel.
  *