18c2ecf20Sopenharmony_ci#!/bin/sh 28c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0+ 38c2ecf20Sopenharmony_ci# 48c2ecf20Sopenharmony_ci# the corresponding .litmus.out file, and does not judge the result. 58c2ecf20Sopenharmony_ci# 68c2ecf20Sopenharmony_ci# . scripts/parseargs.sh 78c2ecf20Sopenharmony_ci# 88c2ecf20Sopenharmony_ci# Include into other Linux kernel tools/memory-model scripts. 98c2ecf20Sopenharmony_ci# 108c2ecf20Sopenharmony_ci# Copyright IBM Corporation, 2018 118c2ecf20Sopenharmony_ci# 128c2ecf20Sopenharmony_ci# Author: Paul E. McKenney <paulmck@linux.vnet.ibm.com> 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_ciT=/tmp/parseargs.sh.$$ 158c2ecf20Sopenharmony_cimkdir $T 168c2ecf20Sopenharmony_ci 178c2ecf20Sopenharmony_ci# Initialize one parameter: initparam name default 188c2ecf20Sopenharmony_ciinitparam () { 198c2ecf20Sopenharmony_ci echo if test -z '"$'$1'"' > $T/s 208c2ecf20Sopenharmony_ci echo then >> $T/s 218c2ecf20Sopenharmony_ci echo $1='"'$2'"' >> $T/s 228c2ecf20Sopenharmony_ci echo export $1 >> $T/s 238c2ecf20Sopenharmony_ci echo fi >> $T/s 248c2ecf20Sopenharmony_ci echo $1_DEF='$'$1 >> $T/s 258c2ecf20Sopenharmony_ci . $T/s 268c2ecf20Sopenharmony_ci} 278c2ecf20Sopenharmony_ci 288c2ecf20Sopenharmony_ciinitparam LKMM_DESTDIR "." 298c2ecf20Sopenharmony_ciinitparam LKMM_HERD_OPTIONS "-conf linux-kernel.cfg" 308c2ecf20Sopenharmony_ciinitparam LKMM_JOBS `getconf _NPROCESSORS_ONLN` 318c2ecf20Sopenharmony_ciinitparam LKMM_PROCS "3" 328c2ecf20Sopenharmony_ciinitparam LKMM_TIMEOUT "1m" 338c2ecf20Sopenharmony_ci 348c2ecf20Sopenharmony_ciscriptname=$0 358c2ecf20Sopenharmony_ci 368c2ecf20Sopenharmony_ciusagehelp () { 378c2ecf20Sopenharmony_ci echo "Usage $scriptname [ arguments ]" 388c2ecf20Sopenharmony_ci echo " --destdir path (place for .litmus.out, default by .litmus)" 398c2ecf20Sopenharmony_ci echo " --herdopts -conf linux-kernel.cfg ..." 408c2ecf20Sopenharmony_ci echo " --jobs N (number of jobs, default one per CPU)" 418c2ecf20Sopenharmony_ci echo " --procs N (litmus tests with at most this many processes)" 428c2ecf20Sopenharmony_ci echo " --timeout N (herd7 timeout (e.g., 10s, 1m, 2hr, 1d, '')" 438c2ecf20Sopenharmony_ci echo "Defaults: --destdir '$LKMM_DESTDIR_DEF' --herdopts '$LKMM_HERD_OPTIONS_DEF' --jobs '$LKMM_JOBS_DEF' --procs '$LKMM_PROCS_DEF' --timeout '$LKMM_TIMEOUT_DEF'" 448c2ecf20Sopenharmony_ci exit 1 458c2ecf20Sopenharmony_ci} 468c2ecf20Sopenharmony_ci 478c2ecf20Sopenharmony_ciusage () { 488c2ecf20Sopenharmony_ci usagehelp 1>&2 498c2ecf20Sopenharmony_ci} 508c2ecf20Sopenharmony_ci 518c2ecf20Sopenharmony_ci# checkarg --argname argtype $# arg mustmatch cannotmatch 528c2ecf20Sopenharmony_cicheckarg () { 538c2ecf20Sopenharmony_ci if test $3 -le 1 548c2ecf20Sopenharmony_ci then 558c2ecf20Sopenharmony_ci echo $1 needs argument $2 matching \"$5\" 568c2ecf20Sopenharmony_ci usage 578c2ecf20Sopenharmony_ci fi 588c2ecf20Sopenharmony_ci if echo "$4" | grep -q -e "$5" 598c2ecf20Sopenharmony_ci then 608c2ecf20Sopenharmony_ci : 618c2ecf20Sopenharmony_ci else 628c2ecf20Sopenharmony_ci echo $1 $2 \"$4\" must match \"$5\" 638c2ecf20Sopenharmony_ci usage 648c2ecf20Sopenharmony_ci fi 658c2ecf20Sopenharmony_ci if echo "$4" | grep -q -e "$6" 668c2ecf20Sopenharmony_ci then 678c2ecf20Sopenharmony_ci echo $1 $2 \"$4\" must not match \"$6\" 688c2ecf20Sopenharmony_ci usage 698c2ecf20Sopenharmony_ci fi 708c2ecf20Sopenharmony_ci} 718c2ecf20Sopenharmony_ci 728c2ecf20Sopenharmony_ciwhile test $# -gt 0 738c2ecf20Sopenharmony_cido 748c2ecf20Sopenharmony_ci case "$1" in 758c2ecf20Sopenharmony_ci --destdir) 768c2ecf20Sopenharmony_ci checkarg --destdir "(path to directory)" "$#" "$2" '.\+' '^--' 778c2ecf20Sopenharmony_ci LKMM_DESTDIR="$2" 788c2ecf20Sopenharmony_ci mkdir $LKMM_DESTDIR > /dev/null 2>&1 798c2ecf20Sopenharmony_ci if ! test -e "$LKMM_DESTDIR" 808c2ecf20Sopenharmony_ci then 818c2ecf20Sopenharmony_ci echo "Cannot create directory --destdir '$LKMM_DESTDIR'" 828c2ecf20Sopenharmony_ci usage 838c2ecf20Sopenharmony_ci fi 848c2ecf20Sopenharmony_ci if test -d "$LKMM_DESTDIR" -a -w "$LKMM_DESTDIR" -a -x "$LKMM_DESTDIR" 858c2ecf20Sopenharmony_ci then 868c2ecf20Sopenharmony_ci : 878c2ecf20Sopenharmony_ci else 888c2ecf20Sopenharmony_ci echo "Directory --destdir '$LKMM_DESTDIR' insufficient permissions to create files" 898c2ecf20Sopenharmony_ci usage 908c2ecf20Sopenharmony_ci fi 918c2ecf20Sopenharmony_ci shift 928c2ecf20Sopenharmony_ci ;; 938c2ecf20Sopenharmony_ci --herdopts|--herdopt) 948c2ecf20Sopenharmony_ci checkarg --destdir "(herd7 options)" "$#" "$2" '.*' '^--' 958c2ecf20Sopenharmony_ci LKMM_HERD_OPTIONS="$2" 968c2ecf20Sopenharmony_ci shift 978c2ecf20Sopenharmony_ci ;; 988c2ecf20Sopenharmony_ci -j[1-9]*) 998c2ecf20Sopenharmony_ci njobs="`echo $1 | sed -e 's/^-j//'`" 1008c2ecf20Sopenharmony_ci trailchars="`echo $njobs | sed -e 's/[0-9]\+\(.*\)$/\1/'`" 1018c2ecf20Sopenharmony_ci if test -n "$trailchars" 1028c2ecf20Sopenharmony_ci then 1038c2ecf20Sopenharmony_ci echo $1 trailing characters "'$trailchars'" 1048c2ecf20Sopenharmony_ci usagehelp 1058c2ecf20Sopenharmony_ci fi 1068c2ecf20Sopenharmony_ci LKMM_JOBS="`echo $njobs | sed -e 's/^\([0-9]\+\).*$/\1/'`" 1078c2ecf20Sopenharmony_ci ;; 1088c2ecf20Sopenharmony_ci --jobs|--job|-j) 1098c2ecf20Sopenharmony_ci checkarg --jobs "(number)" "$#" "$2" '^[1-9][0-9]\+$' '^--' 1108c2ecf20Sopenharmony_ci LKMM_JOBS="$2" 1118c2ecf20Sopenharmony_ci shift 1128c2ecf20Sopenharmony_ci ;; 1138c2ecf20Sopenharmony_ci --procs|--proc) 1148c2ecf20Sopenharmony_ci checkarg --procs "(number)" "$#" "$2" '^[0-9]\+$' '^--' 1158c2ecf20Sopenharmony_ci LKMM_PROCS="$2" 1168c2ecf20Sopenharmony_ci shift 1178c2ecf20Sopenharmony_ci ;; 1188c2ecf20Sopenharmony_ci --timeout) 1198c2ecf20Sopenharmony_ci checkarg --timeout "(timeout spec)" "$#" "$2" '^\([0-9]\+[smhd]\?\|\)$' '^--' 1208c2ecf20Sopenharmony_ci LKMM_TIMEOUT="$2" 1218c2ecf20Sopenharmony_ci shift 1228c2ecf20Sopenharmony_ci ;; 1238c2ecf20Sopenharmony_ci *) 1248c2ecf20Sopenharmony_ci echo Unknown argument $1 1258c2ecf20Sopenharmony_ci usage 1268c2ecf20Sopenharmony_ci ;; 1278c2ecf20Sopenharmony_ci esac 1288c2ecf20Sopenharmony_ci shift 1298c2ecf20Sopenharmony_cidone 1308c2ecf20Sopenharmony_ciif test -z "$LKMM_TIMEOUT" 1318c2ecf20Sopenharmony_cithen 1328c2ecf20Sopenharmony_ci LKMM_TIMEOUT_CMD=""; export LKMM_TIMEOUT_CMD 1338c2ecf20Sopenharmony_cielse 1348c2ecf20Sopenharmony_ci LKMM_TIMEOUT_CMD="timeout $LKMM_TIMEOUT"; export LKMM_TIMEOUT_CMD 1358c2ecf20Sopenharmony_cifi 1368c2ecf20Sopenharmony_cirm -rf $T 137