Subject: Re: [PATCH] Discourage use of __initcall() in favour of device_initcall()

From: Andy Whitcroft <[email-masked]>
Date: Fri, 16 May 2008 09:46:02 +0100

On Fri, May 16, 2008 at 11:49:14AM +1000, Michael Ellerman wrote:
> Add a comment above the definition of __initcall(), just in case
> someone looks here.
> 
> And add a checkpatch warning for new uses of __initcall().
> 
> Signed-off-by: Michael Ellerman <[email-masked]>
> ---
> 
> How's this? My perl skills are not good, but this seems to work.
> 
>  include/linux/init.h  |    1 +
>  scripts/checkpatch.pl |    4 ++++
>  2 files changed, 5 insertions(+), 0 deletions(-)
> 
> diff --git a/include/linux/init.h b/include/linux/init.h
> index 21d658c..6390e22 100644
> --- a/include/linux/init.h
> +++ b/include/linux/init.h
> @@ -193,6 +193,7 @@ extern void (*late_time_init)(void);
>  #define late_initcall(fn)		__define_initcall("7",fn,7)
>  #define late_initcall_sync(fn)		__define_initcall("7s",fn,7s)
>  
> +/* Please use device_initcall() directly in new code */
>  #define __initcall(fn) device_initcall(fn)
>  
>  #define __exitcall(fn) \
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> index b6bbbcd..3faff3f 100755
> --- a/scripts/checkpatch.pl
> +++ b/scripts/checkpatch.pl
> @@ -2026,6 +2026,10 @@ sub process {
>  		if ($line =~ /\bsimple_(strto.*?)\s*\(/) {
>  			WARN("consider using strict_$1 in preference to simple_$1\n" . $herecurr);
>  		}
> +# check for __initcall(), use device_initcall() explicitly please
> +		if ($line =~ /^.\s*__initcall\(/) {

Well you should probabally allow spaces before the ( but otherwise its
in the spirit.

Checkpatch has its own tree as it has an extensive regression test
suite.  So I'll suck this half up into my tree and it'll be in the 0.20
update.

> +			WARN("please use device_initcall() instead of __initcall()\n" . $herecurr);
> +		}
>  
>  # use of NR_CPUS is usually wrong
>  # ignore definitions of NR_CPUS and usage to define arrays as likely right

-apw