162306a36Sopenharmony_ci#!/bin/bash
262306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
362306a36Sopenharmony_ci# Copyright (C) 2015-2019 ARM Limited.
462306a36Sopenharmony_ci# Original author: Dave Martin <Dave.Martin@arm.com>
562306a36Sopenharmony_ci
662306a36Sopenharmony_ciset -ue
762306a36Sopenharmony_ci
862306a36Sopenharmony_ciNR_CPUS=`nproc`
962306a36Sopenharmony_ci
1062306a36Sopenharmony_cipids=
1162306a36Sopenharmony_cilogs=
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_cicleanup () {
1462306a36Sopenharmony_ci	trap - INT TERM CHLD
1562306a36Sopenharmony_ci	set +e
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci	if [ -n "$pids" ]; then
1862306a36Sopenharmony_ci		kill $pids
1962306a36Sopenharmony_ci		wait $pids
2062306a36Sopenharmony_ci		pids=
2162306a36Sopenharmony_ci	fi
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci	if [ -n "$logs" ]; then
2462306a36Sopenharmony_ci		cat $logs
2562306a36Sopenharmony_ci		rm $logs
2662306a36Sopenharmony_ci		logs=
2762306a36Sopenharmony_ci	fi
2862306a36Sopenharmony_ci}
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ciinterrupt () {
3162306a36Sopenharmony_ci	cleanup
3262306a36Sopenharmony_ci	exit 0
3362306a36Sopenharmony_ci}
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_cichild_died () {
3662306a36Sopenharmony_ci	cleanup
3762306a36Sopenharmony_ci	exit 1
3862306a36Sopenharmony_ci}
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_citrap interrupt INT TERM EXIT
4162306a36Sopenharmony_citrap child_died CHLD
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_cifor x in `seq 0 $((NR_CPUS * 4))`; do
4462306a36Sopenharmony_ci	log=`mktemp`
4562306a36Sopenharmony_ci	logs=$logs\ $log
4662306a36Sopenharmony_ci	./fpsimd-test >$log &
4762306a36Sopenharmony_ci	pids=$pids\ $!
4862306a36Sopenharmony_cidone
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ci# Wait for all child processes to be created:
5162306a36Sopenharmony_cisleep 10
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_ciwhile :; do
5462306a36Sopenharmony_ci	kill -USR1 $pids
5562306a36Sopenharmony_cidone &
5662306a36Sopenharmony_cipids=$pids\ $!
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_ciwait
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ciexit 1
61