Commit 0d8a9ea9 authored by Paul E. McKenney's avatar Paul E. McKenney
Browse files

torture: Explain and simplify odd "for" loop in mkinitrd.sh



Why a Bourne-shell "for" loop?  And why 192 instances of "a"?  This commit
adds a shell comment to present the answer to these mysteries.  It also
uses a series of factor-of-four Bourne-shell assignments to make it
easy to see how many instances there are, replacing the earlier wall of
'a' characters.

Reported-by: default avatarJosh Triplett <josh@joshtriplett.org>
Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.ibm.com>
Reviewed-by: default avatarJosh Triplett <josh@joshtriplett.org>
[ paulmck: Fix wrong-variable bugs noted by Andrea Parri. ]
parent cd618d10
Loading
Loading
Loading
Loading
+15 −8
Original line number Diff line number Diff line
@@ -40,17 +40,24 @@ mkdir $T
cat > $T/init << '__EOF___'
#!/bin/sh
# Run in userspace a few milliseconds every second.  This helps to
# exercise the NO_HZ_FULL portions of RCU.
# exercise the NO_HZ_FULL portions of RCU.  The 192 instances of "a" was
# empirically shown to give a nice multi-millisecond burst of user-mode
# execution on a 2GHz CPU, as desired.  Modern CPUs will vary from a
# couple of milliseconds up to perhaps 100 milliseconds, which is an
# acceptable range.
#
# Why not calibrate an exact delay?  Because within this initrd, we
# are restricted to Bourne-shell builtins, which as far as I know do not
# provide any means of obtaining a fine-grained timestamp.

a4="a a a a"
a16="$a4 $a4 $a4 $a4"
a64="$a16 $a16 $a16 $a16"
a192="$a64 $a64 $a64"
while :
do
	q=
	for i in \
		a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a \
		a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a \
		a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a \
		a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a \
		a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a \
		a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a
	for i in $a192
	do
		q="$q $i"
	done