| #!/bin/bash |
| # SPDX-License-Identifier: GPL-2.0-only |
| # Copyright (C) 2015-2019 ARM Limited. |
| # Original author: Dave Martin <Dave.Martin@arm.com> |
| |
| set -ue |
| |
| NR_CPUS=`nproc` |
| |
| pids= |
| logs= |
| |
| cleanup () { |
| trap - INT TERM CHLD |
| set +e |
| |
| if [ -n "$pids" ]; then |
| kill $pids |
| wait $pids |
| pids= |
| fi |
| |
| if [ -n "$logs" ]; then |
| cat $logs |
| rm $logs |
| logs= |
| fi |
| } |
| |
| interrupt () { |
| cleanup |
| exit 0 |
| } |
| |
| child_died () { |
| cleanup |
| exit 1 |
| } |
| |
| trap interrupt INT TERM EXIT |
| trap child_died CHLD |
| |
| for x in `seq 0 $((NR_CPUS * 4))`; do |
| log=`mktemp` |
| logs=$logs\ $log |
| ./fpsimd-test >$log & |
| pids=$pids\ $! |
| done |
| |
| # Wait for all child processes to be created: |
| sleep 10 |
| |
| while :; do |
| kill -USR1 $pids |
| done & |
| pids=$pids\ $! |
| |
| wait |
| |
| exit 1 |