1 #!/bin/sh 1 #!/bin/sh 2 # SPDX-License-Identifier: GPL-2.0+ 2 # SPDX-License-Identifier: GPL-2.0+ 3 # 3 # 4 # Reruns the C-language litmus tests previousl 4 # Reruns the C-language litmus tests previously run that match the 5 # specified criteria, and compares the result 5 # specified criteria, and compares the result to that of the previous 6 # runs from initlitmushist.sh and/or newlitmus 6 # runs from initlitmushist.sh and/or newlitmushist.sh. 7 # 7 # 8 # sh checklitmushist.sh 8 # sh checklitmushist.sh 9 # 9 # 10 # Run from the Linux kernel tools/memory-model 10 # Run from the Linux kernel tools/memory-model directory. 11 # See scripts/parseargs.sh for list of argumen 11 # See scripts/parseargs.sh for list of arguments. 12 # 12 # 13 # Copyright IBM Corporation, 2018 13 # Copyright IBM Corporation, 2018 14 # 14 # 15 # Author: Paul E. McKenney <paulmck@linux.ibm.c 15 # Author: Paul E. McKenney <paulmck@linux.ibm.com> 16 16 17 . scripts/parseargs.sh 17 . scripts/parseargs.sh 18 18 19 T=/tmp/checklitmushist.sh.$$ 19 T=/tmp/checklitmushist.sh.$$ 20 trap 'rm -rf $T' 0 20 trap 'rm -rf $T' 0 21 mkdir $T 21 mkdir $T 22 22 23 if test -d litmus 23 if test -d litmus 24 then 24 then 25 : 25 : 26 else 26 else 27 echo Run scripts/initlitmushist.sh fir 27 echo Run scripts/initlitmushist.sh first, need litmus repo. 28 exit 1 28 exit 1 29 fi 29 fi 30 30 31 # Create the results directory and populate it 31 # Create the results directory and populate it with subdirectories. 32 # The initial output is created here to avoid 32 # The initial output is created here to avoid clobbering the output 33 # generated earlier. 33 # generated earlier. 34 mkdir $T/results 34 mkdir $T/results 35 find litmus -type d -print | ( cd $T/results; 35 find litmus -type d -print | ( cd $T/results; sed -e 's/^/mkdir -p /' | sh ) 36 36 37 # Create the list of litmus tests already run, 37 # Create the list of litmus tests already run, then remove those that 38 # are excluded by this run's --procs argument. 38 # are excluded by this run's --procs argument. 39 ( cd $LKMM_DESTDIR; find litmus -name '*.litmu 39 ( cd $LKMM_DESTDIR; find litmus -name '*.litmus.out' -print ) | 40 sed -e 's/\.out$//' | 40 sed -e 's/\.out$//' | 41 xargs -r grep -L "^P${LKMM_PROCS}"> $T 41 xargs -r grep -L "^P${LKMM_PROCS}"> $T/list-C-already 42 xargs < $T/list-C-already -r grep -L "^P${LKMM 42 xargs < $T/list-C-already -r grep -L "^P${LKMM_PROCS}" > $T/list-C-short 43 43 44 # Redirect output, run tests, then restore des 44 # Redirect output, run tests, then restore destination directory. 45 destdir="$LKMM_DESTDIR" 45 destdir="$LKMM_DESTDIR" 46 LKMM_DESTDIR=$T/results; export LKMM_DESTDIR 46 LKMM_DESTDIR=$T/results; export LKMM_DESTDIR 47 scripts/runlitmushist.sh < $T/list-C-short > $ 47 scripts/runlitmushist.sh < $T/list-C-short > $T/runlitmushist.sh.out 2>&1 48 LKMM_DESTDIR="$destdir"; export LKMM_DESTDIR 48 LKMM_DESTDIR="$destdir"; export LKMM_DESTDIR 49 49 50 # Move the newly generated .litmus.out files t 50 # Move the newly generated .litmus.out files to .litmus.out.new files 51 # in the destination directory. 51 # in the destination directory. 52 cdir=`pwd` 52 cdir=`pwd` 53 ddir=`awk -v c="$cdir" -v d="$LKMM_DESTDIR" \ 53 ddir=`awk -v c="$cdir" -v d="$LKMM_DESTDIR" \ 54 'END { if (d ~ /^\//) print d; else pr 54 'END { if (d ~ /^\//) print d; else print c "/" d; }' < /dev/null` 55 ( cd $T/results; find litmus -type f -name '*. 55 ( cd $T/results; find litmus -type f -name '*.litmus.out' -print | 56 sed -e 's,^.*$,cp & '"$ddir"'/&.new,' | sh ) 56 sed -e 's,^.*$,cp & '"$ddir"'/&.new,' | sh ) 57 57 58 sed < $T/list-C-short -e 's,^,'"$LKMM_DESTDIR/ 58 sed < $T/list-C-short -e 's,^,'"$LKMM_DESTDIR/"',' | 59 sh scripts/cmplitmushist.sh 59 sh scripts/cmplitmushist.sh 60 exit $? 60 exit $?
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.