1*8462SApril.Chin@Sun.COM######################################################################## 2*8462SApril.Chin@Sun.COM# # 3*8462SApril.Chin@Sun.COM# This software is part of the ast package # 4*8462SApril.Chin@Sun.COM# Copyright (c) 1982-2008 AT&T Intellectual Property # 5*8462SApril.Chin@Sun.COM# and is licensed under the # 6*8462SApril.Chin@Sun.COM# Common Public License, Version 1.0 # 7*8462SApril.Chin@Sun.COM# by AT&T Intellectual Property # 8*8462SApril.Chin@Sun.COM# # 9*8462SApril.Chin@Sun.COM# A copy of the License is available at # 10*8462SApril.Chin@Sun.COM# http://www.opensource.org/licenses/cpl1.0.txt # 11*8462SApril.Chin@Sun.COM# (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) # 12*8462SApril.Chin@Sun.COM# # 13*8462SApril.Chin@Sun.COM# Information and Software Systems Research # 14*8462SApril.Chin@Sun.COM# AT&T Research # 15*8462SApril.Chin@Sun.COM# Florham Park NJ # 16*8462SApril.Chin@Sun.COM# # 17*8462SApril.Chin@Sun.COM# David Korn <dgk@research.att.com> # 18*8462SApril.Chin@Sun.COM# # 19*8462SApril.Chin@Sun.COM######################################################################## 20*8462SApril.Chin@Sun.COMfunction err_exit 21*8462SApril.Chin@Sun.COM{ 22*8462SApril.Chin@Sun.COM print -u2 -n "\t" 23*8462SApril.Chin@Sun.COM print -u2 -r ${Command}[$1]: "${@:2}" 24*8462SApril.Chin@Sun.COM (( Errors+=1 )) 25*8462SApril.Chin@Sun.COM} 26*8462SApril.Chin@Sun.COM 27*8462SApril.Chin@Sun.COMalias err_exit='err_exit $LINENO' 28*8462SApril.Chin@Sun.COM 29*8462SApril.Chin@Sun.COMfloat DELAY=${1:-0.5} 30*8462SApril.Chin@Sun.COMinteger FOREGROUND=10 BACKGROUND=2 Errors=0 31*8462SApril.Chin@Sun.COM 32*8462SApril.Chin@Sun.COMs=$($SHELL -c ' 33*8462SApril.Chin@Sun.COMinteger i foreground=0 background=0 34*8462SApril.Chin@Sun.COMfloat delay='$DELAY' d=0 s=0 35*8462SApril.Chin@Sun.COM 36*8462SApril.Chin@Sun.COMset --errexit 37*8462SApril.Chin@Sun.COM 38*8462SApril.Chin@Sun.COMtrap "(( background++ ))" CHLD 39*8462SApril.Chin@Sun.COM 40*8462SApril.Chin@Sun.COM(( d = delay )) 41*8462SApril.Chin@Sun.COMfor ((i = 0; i < '$BACKGROUND'; i++)) 42*8462SApril.Chin@Sun.COMdo sleep $d & 43*8462SApril.Chin@Sun.COM (( d *= 4 )) 44*8462SApril.Chin@Sun.COM (( s += d )) 45*8462SApril.Chin@Sun.COMdone 46*8462SApril.Chin@Sun.COMfor ((i = 0; i < '$FOREGROUND'; i++)) 47*8462SApril.Chin@Sun.COMdo (( foreground++ )) 48*8462SApril.Chin@Sun.COM sleep $delay 49*8462SApril.Chin@Sun.COM (( s -= delay )) 50*8462SApril.Chin@Sun.COM $SHELL -c : > /dev/null # foreground does not generate SIGCHLD 51*8462SApril.Chin@Sun.COMdone 52*8462SApril.Chin@Sun.COMif (( (s += delay) < 1 )) 53*8462SApril.Chin@Sun.COMthen (( s = 1 )) 54*8462SApril.Chin@Sun.COMfi 55*8462SApril.Chin@Sun.COMsleep $s 56*8462SApril.Chin@Sun.COMwait 57*8462SApril.Chin@Sun.COMprint foreground=$foreground background=$background 58*8462SApril.Chin@Sun.COM') || err_exit "test loop failed" 59*8462SApril.Chin@Sun.COM 60*8462SApril.Chin@Sun.COMeval $s 61*8462SApril.Chin@Sun.COM 62*8462SApril.Chin@Sun.COM(( foreground == FOREGROUND )) || err_exit "expected $FOREGROUND foreground -- got $foreground (DELAY=$DELAY)" 63*8462SApril.Chin@Sun.COM(( background == BACKGROUND )) || err_exit "expected $BACKGROUND background -- got $background (DELAY=$DELAY)" 64*8462SApril.Chin@Sun.COM 65*8462SApril.Chin@Sun.COMexit $((Errors)) 66