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

Commit 90d06a46 authored by Kees Cook's avatar Kees Cook Committed by Michal Marek
Browse files

coccicheck: span checks across CPUs



This adds parallelism by default to the "coccicheck" target using
spatch's "-max" and "-index" arguments.

Signed-off-by: default avatarKees Cook <keescook@chromium.org>
Signed-off-by: default avatarNicolas Palix <nicolas.palix@imag.fr>
Signed-off-by: default avatarMichal Marek <mmarek@suse.cz>
parent 61cb48c3
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -91,6 +91,11 @@ To enable verbose messages set the V= variable, for example:

   make coccicheck MODE=report V=1

By default, coccicheck tries to run as parallel as possible. To change
the parallelism, set the J= variable. For example, to run across 4 CPUs:

   make coccicheck MODE=report J=4


 Using Coccinelle with a single semantic patch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+28 −3
Original line number Diff line number Diff line
@@ -2,15 +2,24 @@

SPATCH="`which ${SPATCH:=spatch}`"

trap kill_running SIGTERM SIGINT
declare -a SPATCH_PID

# The verbosity may be set by the environmental parameter V=
# as for example with 'make V=1 coccicheck'

if [ -n "$V" -a "$V" != "0" ]; then
	VERBOSE=1
	VERBOSE="$V"
else
	VERBOSE=0
fi

if [ -z "$J" ]; then
	NPROC=$(getconf _NPROCESSORS_ONLN)
else
	NPROC="$J"
fi

FLAGS="$SPFLAGS -very_quiet"

# spatch only allows include directories with the syntax "-I include"
@@ -69,12 +78,28 @@ if [ "$ONLINE" = "0" ] ; then
fi

run_cmd() {
	local i
	if [ $VERBOSE -ne 0 ] ; then
		echo "Running: $@"
		echo "Running ($NPROC in parallel): $@"
	fi
	for i in $(seq 0 $(( NPROC - 1)) ); do
		eval "$@ -max $NPROC -index $i &"
		SPATCH_PID[$i]=$!
		if [ $VERBOSE -eq 2 ] ; then
			echo "${SPATCH_PID[$i]} running"
		fi
	eval $@
	done
	wait
}

kill_running() {
	for i in $(seq $(( NPROC - 1 )) ); do
		if [ $VERBOSE -eq 2 ] ; then
			echo "Killing ${SPATCH_PID[$i]}"
		fi
		kill ${SPATCH_PID[$i]} 2>/dev/null
	done
}

coccinelle () {
    COCCI="$1"