diff options
author | Luis R. Rodriguez <mcgrof@suse.com> | 2015-03-30 19:20:03 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2015-05-20 03:25:24 -0400 |
commit | ecc8617053e0a97272ef2eee138809f30080e84b (patch) | |
tree | f9433e1dd51aea5b6f66db03460a9f2c1c3f4f4d /lib | |
parent | 6570a9a1ce3a1dd227a065fd8ad16778d827b753 (diff) |
module: add extra argument for parse_params() callback
This adds an extra argument onto parse_params() to be used
as a way to make the unused callback a bit more useful and
generic by allowing the caller to pass on a data structure
of its choice. An example use case is to allow us to easily
make module parameters for every module which we will do
next.
@ parse @
identifier name, args, params, num, level_min, level_max;
identifier unknown, param, val, doing;
type s16;
@@
extern char *parse_args(const char *name,
char *args,
const struct kernel_param *params,
unsigned num,
s16 level_min,
s16 level_max,
+ void *arg,
int (*unknown)(char *param, char *val,
const char *doing
+ , void *arg
));
@ parse_mod @
identifier name, args, params, num, level_min, level_max;
identifier unknown, param, val, doing;
type s16;
@@
char *parse_args(const char *name,
char *args,
const struct kernel_param *params,
unsigned num,
s16 level_min,
s16 level_max,
+ void *arg,
int (*unknown)(char *param, char *val,
const char *doing
+ , void *arg
))
{
...
}
@ parse_args_found @
expression R, E1, E2, E3, E4, E5, E6;
identifier func;
@@
(
R =
parse_args(E1, E2, E3, E4, E5, E6,
+ NULL,
func);
|
R =
parse_args(E1, E2, E3, E4, E5, E6,
+ NULL,
&func);
|
R =
parse_args(E1, E2, E3, E4, E5, E6,
+ NULL,
NULL);
|
parse_args(E1, E2, E3, E4, E5, E6,
+ NULL,
func);
|
parse_args(E1, E2, E3, E4, E5, E6,
+ NULL,
&func);
|
parse_args(E1, E2, E3, E4, E5, E6,
+ NULL,
NULL);
)
@ parse_args_unused depends on parse_args_found @
identifier parse_args_found.func;
@@
int func(char *param, char *val, const char *unused
+ , void *arg
)
{
...
}
@ mod_unused depends on parse_args_found @
identifier parse_args_found.func;
expression A1, A2, A3;
@@
- func(A1, A2, A3);
+ func(A1, A2, A3, NULL);
Generated-by: Coccinelle SmPL
Cc: cocci@systeme.lip6.fr
Cc: Tejun Heo <tj@kernel.org>
Cc: Arjan van de Ven <arjan@linux.intel.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Rusty Russell <rusty@rustcorp.com.au>
Cc: Christoph Hellwig <hch@infradead.org>
Cc: Felipe Contreras <felipe.contreras@gmail.com>
Cc: Ewan Milne <emilne@redhat.com>
Cc: Jean Delvare <jdelvare@suse.de>
Cc: Hannes Reinecke <hare@suse.de>
Cc: Jani Nikula <jani.nikula@intel.com>
Cc: linux-kernel@vger.kernel.org
Reviewed-by: Tejun Heo <tj@kernel.org>
Acked-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Luis R. Rodriguez <mcgrof@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/dynamic_debug.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c index d8f3d3150603..e491e02eff54 100644 --- a/lib/dynamic_debug.c +++ b/lib/dynamic_debug.c | |||
@@ -887,7 +887,7 @@ static int ddebug_dyndbg_param_cb(char *param, char *val, | |||
887 | 887 | ||
888 | /* handle both dyndbg and $module.dyndbg params at boot */ | 888 | /* handle both dyndbg and $module.dyndbg params at boot */ |
889 | static int ddebug_dyndbg_boot_param_cb(char *param, char *val, | 889 | static int ddebug_dyndbg_boot_param_cb(char *param, char *val, |
890 | const char *unused) | 890 | const char *unused, void *arg) |
891 | { | 891 | { |
892 | vpr_info("%s=\"%s\"\n", param, val); | 892 | vpr_info("%s=\"%s\"\n", param, val); |
893 | return ddebug_dyndbg_param_cb(param, val, NULL, 0); | 893 | return ddebug_dyndbg_param_cb(param, val, NULL, 0); |
@@ -1028,7 +1028,7 @@ static int __init dynamic_debug_init(void) | |||
1028 | */ | 1028 | */ |
1029 | cmdline = kstrdup(saved_command_line, GFP_KERNEL); | 1029 | cmdline = kstrdup(saved_command_line, GFP_KERNEL); |
1030 | parse_args("dyndbg params", cmdline, NULL, | 1030 | parse_args("dyndbg params", cmdline, NULL, |
1031 | 0, 0, 0, &ddebug_dyndbg_boot_param_cb); | 1031 | 0, 0, 0, NULL, &ddebug_dyndbg_boot_param_cb); |
1032 | kfree(cmdline); | 1032 | kfree(cmdline); |
1033 | return 0; | 1033 | return 0; |
1034 | 1034 | ||