mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-09-04 20:19:47 +08:00 
			
		
		
		
	 7455cdd1a0
			
		
	
	
		7455cdd1a0
		
	
	
	
	
		
			
			This commit simplifies life a bit by making all of the scripts in tools/memory-model/scripts be executable. Signed-off-by: Paul E. McKenney <paulmck@linux.ibm.com>
		
			
				
	
	
		
			88 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/bash
 | |
| # SPDX-License-Identifier: GPL-2.0+
 | |
| #
 | |
| # Runs the C-language litmus tests specified on standard input, using up
 | |
| # to the specified number of CPUs (defaulting to all of them) and placing
 | |
| # the results in the specified directory (defaulting to the same place
 | |
| # the litmus test came from).
 | |
| #
 | |
| # sh runlitmushist.sh
 | |
| #
 | |
| # Run from the Linux kernel tools/memory-model directory.
 | |
| # This script uses environment variables produced by parseargs.sh.
 | |
| #
 | |
| # Copyright IBM Corporation, 2018
 | |
| #
 | |
| # Author: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
 | |
| 
 | |
| T=/tmp/runlitmushist.sh.$$
 | |
| trap 'rm -rf $T' 0
 | |
| mkdir $T
 | |
| 
 | |
| if test -d litmus
 | |
| then
 | |
| 	:
 | |
| else
 | |
| 	echo Directory \"litmus\" missing, aborting run.
 | |
| 	exit 1
 | |
| fi
 | |
| 
 | |
| # Prefixes for per-CPU scripts
 | |
| for ((i=0;i<$LKMM_JOBS;i++))
 | |
| do
 | |
| 	echo dir="$LKMM_DESTDIR" > $T/$i.sh
 | |
| 	echo T=$T >> $T/$i.sh
 | |
| 	echo herdoptions=\"$LKMM_HERD_OPTIONS\" >> $T/$i.sh
 | |
| 	cat << '___EOF___' >> $T/$i.sh
 | |
| 	runtest () {
 | |
| 		echo ' ... ' /usr/bin/time $LKMM_TIMEOUT_CMD herd7 $herdoptions $1 '>' $dir/$1.out '2>&1'
 | |
| 		if /usr/bin/time $LKMM_TIMEOUT_CMD herd7 $herdoptions $1 > $dir/$1.out 2>&1
 | |
| 		then
 | |
| 			if ! grep -q '^Observation ' $dir/$1.out
 | |
| 			then
 | |
| 				echo ' !!! Herd failed, no Observation:' $1
 | |
| 			fi
 | |
| 		else
 | |
| 			exitcode=$?
 | |
| 			if test "$exitcode" -eq 124
 | |
| 			then
 | |
| 				exitmsg="timed out"
 | |
| 			else
 | |
| 				exitmsg="failed, exit code $exitcode"
 | |
| 			fi
 | |
| 			echo ' !!! Herd' ${exitmsg}: $1
 | |
| 		fi
 | |
| 	}
 | |
| ___EOF___
 | |
| done
 | |
| 
 | |
| awk -v q="'" -v b='\\' '
 | |
| {
 | |
| 	print "echo `grep " q "^P[0-9]" b "+(" q " " $0 " | tail -1 | sed -e " q "s/^P" b "([0-9]" b "+" b ")(.*$/" b "1/" q "` " $0
 | |
| }' | bash |
 | |
| sort -k1n |
 | |
| awk -v ncpu=$LKMM_JOBS -v t=$T '
 | |
| {
 | |
| 	print "runtest " $2 >> t "/" NR % ncpu ".sh";
 | |
| }
 | |
| 
 | |
| END {
 | |
| 	for (i = 0; i < ncpu; i++) {
 | |
| 		print "sh " t "/" i ".sh > " t "/" i ".sh.out 2>&1 &";
 | |
| 		close(t "/" i ".sh");
 | |
| 	}
 | |
| 	print "wait";
 | |
| }' | sh
 | |
| cat $T/*.sh.out
 | |
| if grep -q '!!!' $T/*.sh.out
 | |
| then
 | |
| 	echo ' ---' Summary: 1>&2
 | |
| 	grep '!!!' $T/*.sh.out 1>&2
 | |
| 	nfail="`grep '!!!' $T/*.sh.out | wc -l`"
 | |
| 	echo 'Number of failed herd7 runs (e.g., timeout): ' $nfail 1>&2
 | |
| 	exit 1
 | |
| else
 | |
| 	echo All runs completed successfully. 1>&2
 | |
| 	exit 0
 | |
| fi
 |