Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9716fd07 authored by Luis R. Rodriguez's avatar Luis R. Rodriguez Committed by Lingutla Chandrasekhar
Browse files

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);

Change-Id: I422bc61363b64b012e40a61800472687b6bea0e3
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: default avatarTejun Heo <tj@kernel.org>
Acked-by: default avatarRusty Russell <rusty@rustcorp.com.au>
Signed-off-by: default avatarLuis R. Rodriguez <mcgrof@suse.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Git-commit: ecc8617053e0a97272ef2eee138809f30080e84b
Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git


[clingulta@codeaurora.org: resolve merge conflicts]
Signed-off-by: default avatarLingutla Chandrasekhar <clingutla@codeaurora.org>
parent 29042a19
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment