diff options
| author | Rusty Russell <rusty@rustcorp.com.au> | 2010-08-11 23:04:37 -0600 | 
|---|---|---|
| committer | Rusty Russell <rusty@rustcorp.com.au> | 2010-08-11 23:04:37 +0930 | 
| commit | c8ba6c52e19c13c2b6fb9ca9e5188799c753914c (patch) | |
| tree | af3d9cd6fd8082421013f59f6d436ad63f7fc614 | |
| parent | 886275ce41a9751117367fb387ed171049eb6148 (diff) | |
param: update drivers/char/ipmi/ipmi_watchdog.c to new scheme
This is one of the most interesting users of module parameters in the
tree, so weaning it off the old-style non-const module_param_call
scheme is a useful exercise.
I was confused by set_param_int/get_param_int (vs. the normal
param_set_int and param_get_int), so I renamed set_param_int to
set_param_timeout, and re-used param_get_int directly instead of
get_param_int.  I also implemented param_check_wdog_ifnum and
param_check_timeout, so now the ifnum_to_use and timeout/pretimeout
parameters can just use plain module_param().
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Cc: Corey Minyard <minyard@acm.org>
Cc: openipmi-developer@lists.sourceforge.net
| -rw-r--r-- | drivers/char/ipmi/ipmi_watchdog.c | 42 | 
1 files changed, 27 insertions, 15 deletions
| diff --git a/drivers/char/ipmi/ipmi_watchdog.c b/drivers/char/ipmi/ipmi_watchdog.c index 82bcdb262a3a..654d566ca57c 100644 --- a/drivers/char/ipmi/ipmi_watchdog.c +++ b/drivers/char/ipmi/ipmi_watchdog.c @@ -196,7 +196,7 @@ static void ipmi_unregister_watchdog(int ipmi_intf);   */  static int start_now; -static int set_param_int(const char *val, struct kernel_param *kp) +static int set_param_timeout(const char *val, const struct kernel_param *kp)  {  	char *endp;  	int  l; @@ -215,10 +215,11 @@ static int set_param_int(const char *val, struct kernel_param *kp)  	return rv;  } -static int get_param_int(char *buffer, struct kernel_param *kp) -{ -	return sprintf(buffer, "%i", *((int *)kp->arg)); -} +static struct kernel_param_ops param_ops_timeout = { +	.set = set_param_timeout, +	.get = param_get_int, +}; +#define param_check_timeout param_check_int  typedef int (*action_fn)(const char *intval, char *outval); @@ -227,7 +228,7 @@ static int preaction_op(const char *inval, char *outval);  static int preop_op(const char *inval, char *outval);  static void check_parms(void); -static int set_param_str(const char *val, struct kernel_param *kp) +static int set_param_str(const char *val, const struct kernel_param *kp)  {  	action_fn  fn = (action_fn) kp->arg;  	int        rv = 0; @@ -251,7 +252,7 @@ static int set_param_str(const char *val, struct kernel_param *kp)  	return rv;  } -static int get_param_str(char *buffer, struct kernel_param *kp) +static int get_param_str(char *buffer, const struct kernel_param *kp)  {  	action_fn fn = (action_fn) kp->arg;  	int       rv; @@ -263,7 +264,7 @@ static int get_param_str(char *buffer, struct kernel_param *kp)  } -static int set_param_wdog_ifnum(const char *val, struct kernel_param *kp) +static int set_param_wdog_ifnum(const char *val, const struct kernel_param *kp)  {  	int rv = param_set_int(val, kp);  	if (rv) @@ -276,27 +277,38 @@ static int set_param_wdog_ifnum(const char *val, struct kernel_param *kp)  	return 0;  } -module_param_call(ifnum_to_use, set_param_wdog_ifnum, get_param_int, -		  &ifnum_to_use, 0644); +static struct kernel_param_ops param_ops_wdog_ifnum = { +	.set = set_param_wdog_ifnum, +	.get = param_get_int, +}; + +#define param_check_wdog_ifnum param_check_int + +static struct kernel_param_ops param_ops_str = { +	.set = set_param_str, +	.get = get_param_str, +}; + +module_param(ifnum_to_use, wdog_ifnum, 0644);  MODULE_PARM_DESC(ifnum_to_use, "The interface number to use for the watchdog "  		 "timer.  Setting to -1 defaults to the first registered "  		 "interface"); -module_param_call(timeout, set_param_int, get_param_int, &timeout, 0644); +module_param(timeout, timeout, 0644);  MODULE_PARM_DESC(timeout, "Timeout value in seconds."); -module_param_call(pretimeout, set_param_int, get_param_int, &pretimeout, 0644); +module_param(pretimeout, timeout, 0644);  MODULE_PARM_DESC(pretimeout, "Pretimeout value in seconds."); -module_param_call(action, set_param_str, get_param_str, action_op, 0644); +module_param_cb(action, ¶m_ops_str, action_op, 0644);  MODULE_PARM_DESC(action, "Timeout action. One of: "  		 "reset, none, power_cycle, power_off."); -module_param_call(preaction, set_param_str, get_param_str, preaction_op, 0644); +module_param_cb(preaction, ¶m_ops_str, preaction_op, 0644);  MODULE_PARM_DESC(preaction, "Pretimeout action.  One of: "  		 "pre_none, pre_smi, pre_nmi, pre_int."); -module_param_call(preop, set_param_str, get_param_str, preop_op, 0644); +module_param_cb(preop, ¶m_ops_str, preop_op, 0644);  MODULE_PARM_DESC(preop, "Pretimeout driver operation.  One of: "  		 "preop_none, preop_panic, preop_give_data."); | 
