diff options
Diffstat (limited to 'include/linux/moduleparam.h')
| -rw-r--r-- | include/linux/moduleparam.h | 82 | 
1 files changed, 77 insertions, 5 deletions
diff --git a/include/linux/moduleparam.h b/include/linux/moduleparam.h index e5c3e23919b8..3ef917ff0964 100644 --- a/include/linux/moduleparam.h +++ b/include/linux/moduleparam.h @@ -128,6 +128,9 @@ struct kparam_array  /**   * module_param_unsafe - same as module_param but taints kernel + * @name: the variable to alter, and exposed parameter name. + * @type: the type of the parameter + * @perm: visibility in sysfs.   */  #define module_param_unsafe(name, type, perm)			\  	module_param_named_unsafe(name, name, type, perm) @@ -150,6 +153,10 @@ struct kparam_array  /**   * module_param_named_unsafe - same as module_param_named but taints kernel + * @name: a valid C identifier which is the parameter name. + * @value: the actual lvalue to alter. + * @type: the type of the parameter + * @perm: visibility in sysfs.   */  #define module_param_named_unsafe(name, value, type, perm)		\  	param_check_##type(name, &(value));				\ @@ -160,6 +167,7 @@ struct kparam_array   * module_param_cb - general callback for a module/cmdline parameter   * @name: a valid C identifier which is the parameter name.   * @ops: the set & get operations for this parameter. + * @arg: args for @ops   * @perm: visibility in sysfs.   *   * The ops can have NULL set or get functions. @@ -171,36 +179,96 @@ struct kparam_array  	__module_param_call(MODULE_PARAM_PREFIX, name, ops, arg, perm, -1,    \  			    KERNEL_PARAM_FL_UNSAFE) +#define __level_param_cb(name, ops, arg, perm, level)			\ +	__module_param_call(MODULE_PARAM_PREFIX, name, ops, arg, perm, level, 0)  /** - * <level>_param_cb - general callback for a module/cmdline parameter - *                    to be evaluated before certain initcall level + * core_param_cb - general callback for a module/cmdline parameter + *                 to be evaluated before core initcall level   * @name: a valid C identifier which is the parameter name.   * @ops: the set & get operations for this parameter. + * @arg: args for @ops   * @perm: visibility in sysfs.   *   * The ops can have NULL set or get functions.   */ -#define __level_param_cb(name, ops, arg, perm, level)			\ -	__module_param_call(MODULE_PARAM_PREFIX, name, ops, arg, perm, level, 0) -  #define core_param_cb(name, ops, arg, perm)		\  	__level_param_cb(name, ops, arg, perm, 1) +/** + * postcore_param_cb - general callback for a module/cmdline parameter + *                     to be evaluated before postcore initcall level + * @name: a valid C identifier which is the parameter name. + * @ops: the set & get operations for this parameter. + * @arg: args for @ops + * @perm: visibility in sysfs. + * + * The ops can have NULL set or get functions. + */  #define postcore_param_cb(name, ops, arg, perm)		\  	__level_param_cb(name, ops, arg, perm, 2) +/** + * arch_param_cb - general callback for a module/cmdline parameter + *                 to be evaluated before arch initcall level + * @name: a valid C identifier which is the parameter name. + * @ops: the set & get operations for this parameter. + * @arg: args for @ops + * @perm: visibility in sysfs. + * + * The ops can have NULL set or get functions. + */  #define arch_param_cb(name, ops, arg, perm)		\  	__level_param_cb(name, ops, arg, perm, 3) +/** + * subsys_param_cb - general callback for a module/cmdline parameter + *                   to be evaluated before subsys initcall level + * @name: a valid C identifier which is the parameter name. + * @ops: the set & get operations for this parameter. + * @arg: args for @ops + * @perm: visibility in sysfs. + * + * The ops can have NULL set or get functions. + */  #define subsys_param_cb(name, ops, arg, perm)		\  	__level_param_cb(name, ops, arg, perm, 4) +/** + * fs_param_cb - general callback for a module/cmdline parameter + *               to be evaluated before fs initcall level + * @name: a valid C identifier which is the parameter name. + * @ops: the set & get operations for this parameter. + * @arg: args for @ops + * @perm: visibility in sysfs. + * + * The ops can have NULL set or get functions. + */  #define fs_param_cb(name, ops, arg, perm)		\  	__level_param_cb(name, ops, arg, perm, 5) +/** + * device_param_cb - general callback for a module/cmdline parameter + *                   to be evaluated before device initcall level + * @name: a valid C identifier which is the parameter name. + * @ops: the set & get operations for this parameter. + * @arg: args for @ops + * @perm: visibility in sysfs. + * + * The ops can have NULL set or get functions. + */  #define device_param_cb(name, ops, arg, perm)		\  	__level_param_cb(name, ops, arg, perm, 6) +/** + * late_param_cb - general callback for a module/cmdline parameter + *                 to be evaluated before late initcall level + * @name: a valid C identifier which is the parameter name. + * @ops: the set & get operations for this parameter. + * @arg: args for @ops + * @perm: visibility in sysfs. + * + * The ops can have NULL set or get functions. + */  #define late_param_cb(name, ops, arg, perm)		\  	__level_param_cb(name, ops, arg, perm, 7) @@ -263,6 +331,10 @@ static inline void kernel_param_unlock(struct module *mod)  /**   * core_param_unsafe - same as core_param but taints kernel + * @name: the name of the cmdline and sysfs parameter (often the same as var) + * @var: the variable + * @type: the type of the parameter + * @perm: visibility in sysfs   */  #define core_param_unsafe(name, var, type, perm)		\  	param_check_##type(name, &(var));				\  |