diff options
author | Paul E. McKenney <paulmck@linux.ibm.com> | 2018-12-04 23:59:12 +0100 |
---|---|---|
committer | Paul E. McKenney <paulmck@linux.ibm.com> | 2019-01-26 00:37:09 +0100 |
commit | 0d8a9ea9764a0e34e17e3b80a2be3855de239d6e (patch) | |
tree | 326c42579e175127b216f9f01a997812f6943e86 /tools/testing/selftests/rcutorture | |
parent | rcutorture: Record grace periods in forward-progress histogram (diff) | |
download | linux-0d8a9ea9764a0e34e17e3b80a2be3855de239d6e.tar.xz linux-0d8a9ea9764a0e34e17e3b80a2be3855de239d6e.zip |
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: Josh Triplett <josh@joshtriplett.org>
Signed-off-by: Paul E. McKenney <paulmck@linux.ibm.com>
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
[ paulmck: Fix wrong-variable bugs noted by Andrea Parri. ]
Diffstat (limited to 'tools/testing/selftests/rcutorture')
-rwxr-xr-x | tools/testing/selftests/rcutorture/bin/mkinitrd.sh | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/tools/testing/selftests/rcutorture/bin/mkinitrd.sh b/tools/testing/selftests/rcutorture/bin/mkinitrd.sh index da298394daa2..e79eb35c41e2 100755 --- a/tools/testing/selftests/rcutorture/bin/mkinitrd.sh +++ b/tools/testing/selftests/rcutorture/bin/mkinitrd.sh @@ -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 |