brintos

brintos / linux-shallow public Read only

0
0
Text · 3.3 KiB · 08ded59 Raw
148 lines · bash
1#!/bin/sh2# SPDX-License-Identifier: GPL-2.0+3#4# Parse arguments common to the various scripts.5#6# . scripts/parseargs.sh7#8# Include into other Linux kernel tools/memory-model scripts.9#10# Copyright IBM Corporation, 201811#12# Author: Paul E. McKenney <paulmck@linux.ibm.com>13 14T=/tmp/parseargs.sh.$$15mkdir $T16 17# Initialize one parameter: initparam name default18initparam () {19	echo if test -z '"$'$1'"' > $T/s20	echo then >> $T/s21	echo	$1='"'$2'"' >> $T/s22	echo	export $1 >> $T/s23	echo fi >> $T/s24	echo $1_DEF='$'$1  >> $T/s25	. $T/s26}27 28initparam LKMM_DESTDIR "."29initparam LKMM_HERD_OPTIONS "-conf linux-kernel.cfg"30initparam LKMM_HW_MAP_FILE ""31initparam LKMM_JOBS `getconf _NPROCESSORS_ONLN`32initparam LKMM_PROCS "3"33initparam LKMM_TIMEOUT "1m"34 35scriptname=$036 37usagehelp () {38	echo "Usage $scriptname [ arguments ]"39	echo "      --destdir path (place for .litmus.out, default by .litmus)"40	echo "      --herdopts -conf linux-kernel.cfg ..."41	echo "      --hw AArch64"42	echo "      --jobs N (number of jobs, default one per CPU)"43	echo "      --procs N (litmus tests with at most this many processes)"44	echo "      --timeout N (herd7 timeout (e.g., 10s, 1m, 2hr, 1d, '')"45	echo "Defaults: --destdir '$LKMM_DESTDIR_DEF' --herdopts '$LKMM_HERD_OPTIONS_DEF' --hw '$LKMM_HW_MAP_FILE' --jobs '$LKMM_JOBS_DEF' --procs '$LKMM_PROCS_DEF' --timeout '$LKMM_TIMEOUT_DEF'"46	exit 147}48 49usage () {50	usagehelp 1>&251}52 53# checkarg --argname argtype $# arg mustmatch cannotmatch54checkarg () {55	if test $3 -le 156	then57		echo $1 needs argument $2 matching \"$5\"58		usage59	fi60	if echo "$4" | grep -q -e "$5"61	then62		:63	else64		echo $1 $2 \"$4\" must match \"$5\"65		usage66	fi67	if echo "$4" | grep -q -e "$6"68	then69		echo $1 $2 \"$4\" must not match \"$6\"70		usage71	fi72}73 74while test $# -gt 075do76	case "$1" in77	--destdir)78		checkarg --destdir "(path to directory)" "$#" "$2" '.\+' '^--'79		LKMM_DESTDIR="$2"80		mkdir $LKMM_DESTDIR > /dev/null 2>&181		if ! test -e "$LKMM_DESTDIR"82		then83			echo "Cannot create directory --destdir '$LKMM_DESTDIR'"84			usage85		fi86		if test -d "$LKMM_DESTDIR" -a -x "$LKMM_DESTDIR"87		then88			:89		else90			echo "Directory --destdir '$LKMM_DESTDIR' insufficient permissions to create files"91			usage92		fi93		shift94		;;95	--herdopts|--herdopt)96		checkarg --destdir "(herd7 options)" "$#" "$2" '.*' '^--'97		LKMM_HERD_OPTIONS="$2"98		shift99		;;100	--hw)101		checkarg --hw "(.map file architecture name)" "$#" "$2" '^[A-Za-z0-9_-]\+' '^--'102		LKMM_HW_MAP_FILE="$2"103		shift104		;;105	-j[1-9]*)106		njobs="`echo $1 | sed -e 's/^-j//'`"107		trailchars="`echo $njobs | sed -e 's/[0-9]\+\(.*\)$/\1/'`"108		if test -n "$trailchars"109		then110			echo $1 trailing characters "'$trailchars'"111			usagehelp112		fi113		LKMM_JOBS="`echo $njobs | sed -e 's/^\([0-9]\+\).*$/\1/'`"114		;;115	--jobs|--job|-j)116		checkarg --jobs "(number)" "$#" "$2" '^[1-9][0-9]*$' '^--'117		LKMM_JOBS="$2"118		shift119		;;120	--procs|--proc)121		checkarg --procs "(number)" "$#" "$2" '^[0-9]\+$' '^--'122		LKMM_PROCS="$2"123		shift124		;;125	--timeout)126		checkarg --timeout "(timeout spec)" "$#" "$2" '^\([0-9]\+[smhd]\?\|\)$' '^--'127		LKMM_TIMEOUT="$2"128		shift129		;;130	--)131		shift132		break133		;;134	*)135		echo Unknown argument $1136		usage137		;;138	esac139	shift140done141if test -z "$LKMM_TIMEOUT"142then143	LKMM_TIMEOUT_CMD=""; export LKMM_TIMEOUT_CMD144else145	LKMM_TIMEOUT_CMD="timeout $LKMM_TIMEOUT"; export LKMM_TIMEOUT_CMD146fi147rm -rf $T148