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

Commit af487e42 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull kbuild misc changes from Michal Marek:
 "This is the non-critical part of kbuild

   - scripts/kernel-doc requires a "Return:" section for non-void
     functions
   - ARCH=arm SUBARCH=... support for make tags
   - COMPILED_SOURCE=1 support for make tags (only indexes .c files for
     which a .o exists)
   - New coccinelle check
   - Option parsing fix for scripts/config"

* 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild:
  scripts/config: Fix wrong "shift" for --keep-case
  scripts/tags.sh: Support compiled source
  scripts/tags.sh: Support subarch for ARM
  scripts/coccinelle/misc/warn.cocci: use WARN
  scripts/kernel-doc: check that non-void fcts describe their return value
  Kernel-doc: Convention: Use a "Return" section to describe return values
parents 810a4855 c6ba8d06
Loading
Loading
Loading
Loading
+109 −0
Original line number Diff line number Diff line
/// Use WARN(1,...) rather than printk followed by WARN_ON(1)
///
// Confidence: High
// Copyright: (C) 2012 Julia Lawall, INRIA/LIP6.  GPLv2.
// Copyright: (C) 2012 Gilles Muller, INRIA/LiP6.  GPLv2.
// URL: http://coccinelle.lip6.fr/
// Comments:
// Options: -no_includes -include_headers

virtual patch
virtual context
virtual org
virtual report

@bad1@
position p;
@@

printk(...);
printk@p(...);
WARN_ON(1);

@r1 depends on context || report || org@
position p != bad1.p;
@@

 printk@p(...);
*WARN_ON(1);

@script:python depends on org@
p << r1.p;
@@

cocci.print_main("printk + WARN_ON can be just WARN",p)

@script:python depends on report@
p << r1.p;
@@

msg = "SUGGESTION: printk + WARN_ON can be just WARN"
coccilib.report.print_report(p[0],msg)

@ok1 depends on patch@
expression list es;
position p != bad1.p;
@@

-printk@p(
+WARN(1,
  es);
-WARN_ON(1);

@depends on patch@
expression list ok1.es;
@@

if (...)
- {
  WARN(1,es);
- }

// --------------------------------------------------------------------

@bad2@
position p;
@@

printk(...);
printk@p(...);
WARN_ON_ONCE(1);

@r2 depends on context || report || org@
position p != bad1.p;
@@

 printk@p(...);
*WARN_ON_ONCE(1);

@script:python depends on org@
p << r2.p;
@@

cocci.print_main("printk + WARN_ON_ONCE can be just WARN_ONCE",p)

@script:python depends on report@
p << r2.p;
@@

msg = "SUGGESTION: printk + WARN_ON_ONCE can be just WARN_ONCE"
coccilib.report.print_report(p[0],msg)

@ok2 depends on patch@
expression list es;
position p != bad2.p;
@@

-printk@p(
+WARN_ONCE(1,
  es);
-WARN_ON_ONCE(1);

@depends on patch@
expression list ok2.es;
@@

if (...)
- {
  WARN_ONCE(1,es);
- }
+0 −1
Original line number Diff line number Diff line
@@ -101,7 +101,6 @@ while [ "$1" != "" ] ; do
	case "$CMD" in
	--keep-case|-k)
		MUNGE_CASE=no
		shift
		continue
		;;
	--refresh)
+49 −8
Original line number Diff line number Diff line
@@ -48,13 +48,14 @@ find_arch_sources()
	for i in $archincludedir; do
		prune="$prune -wholename $i -prune -o"
	done
	find ${tree}arch/$1 $ignore $prune -name "$2" -print;
	find ${tree}arch/$1 $ignore $subarchprune $prune -name "$2" -print;
}

# find sources in arch/$1/include
find_arch_include_sources()
{
	include=$(find ${tree}arch/$1/ -name include -type d);
	include=$(find ${tree}arch/$1/ $subarchprune \
					-name include -type d -print);
	if [ -n "$include" ]; then
		archincludedir="$archincludedir $include"
		find $include $ignore -name "$2" -print;
@@ -95,6 +96,32 @@ all_sources()
	find_other_sources '*.[chS]'
}

all_compiled_sources()
{
	for i in $(all_sources); do
		case "$i" in
			*.[cS])
				j=${i/\.[cS]/\.o}
				if [ -e $j ]; then
					echo $i
				fi
				;;
			*)
				echo $i
				;;
		esac
	done
}

all_target_sources()
{
	if [ -n "$COMPILED_SOURCE" ]; then
		all_compiled_sources
	else
		all_sources
	fi
}

all_kconfigs()
{
	for arch in $ALLSOURCE_ARCHS; do
@@ -110,18 +137,18 @@ all_defconfigs()

docscope()
{
	(echo \-k; echo \-q; all_sources) > cscope.files
	(echo \-k; echo \-q; all_target_sources) > cscope.files
	cscope -b -f cscope.out
}

dogtags()
{
	all_sources | gtags -i -f -
	all_target_sources | gtags -i -f -
}

exuberant()
{
	all_sources | xargs $1 -a                               \
	all_target_sources | xargs $1 -a                        \
	-I __initdata,__exitdata,__acquires,__releases          \
	-I __read_mostly,____cacheline_aligned                  \
	-I ____cacheline_aligned_in_smp                         \
@@ -173,7 +200,7 @@ exuberant()

emacs()
{
	all_sources | xargs $1 -a                               \
	all_target_sources | xargs $1 -a                        \
	--regex='/^(ENTRY|_GLOBAL)(\([^)]*\)).*/\2/'            \
	--regex='/^SYSCALL_DEFINE[0-9]?(\([^,)]*\).*/sys_\1/'   \
	--regex='/^TRACE_EVENT(\([^,)]*\).*/trace_\1/'		\
@@ -220,11 +247,10 @@ xtags()
	elif $1 --version 2>&1 | grep -iq emacs; then
		emacs $1
	else
		all_sources | xargs $1 -a
		all_target_sources | xargs $1 -a
        fi
}


# Support um (which uses SUBARCH)
if [ "${ARCH}" = "um" ]; then
	if [ "$SUBARCH" = "i386" ]; then
@@ -234,6 +260,21 @@ if [ "${ARCH}" = "um" ]; then
	else
		archinclude=${SUBARCH}
	fi
elif [ "${SRCARCH}" = "arm" -a "${SUBARCH}" != "" ]; then
	subarchdir=$(find ${tree}arch/$SRCARCH/ -name "mach-*" -type d -o \
							-name "plat-*" -type d);
	for i in $subarchdir; do
		case "$i" in
			*"mach-"${SUBARCH})
				;;
			*"plat-"${SUBARCH})
				;;
			*)
				subarchprune="$subarchprune \
						-wholename $i -prune -o"
				;;
		esac
	done
fi

remove_structs=