diff options
Diffstat (limited to 'tests/util.sh')
-rw-r--r-- | tests/util.sh | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/tests/util.sh b/tests/util.sh index b846d45..1718a1a 100644 --- a/tests/util.sh +++ b/tests/util.sh @@ -190,3 +190,28 @@ pop_defers() { return $ret } + +## Parallelism + +# Get the number of processors +_nproc() { + { + nproc \ + || sysctl -n hw.ncpu \ + || getconf _NPROCESSORS_ONLN \ + || echo 1 + } 2>/dev/null +} + +# Run wait, looping if interrupted +_wait() { + local ret=130 + + # "If wait is interrupted by a signal, the return status will be greater than 128" + while ((ret > 128)); do + ret=0 + wait "$@" || ret=$? + done + + return $ret +} |