125f47e3eSMark Brown#!/bin/bash 225f47e3eSMark Brown# SPDX-License-Identifier: GPL-2.0-only 325f47e3eSMark Brown# Copyright (C) 2015-2019 ARM Limited. 425f47e3eSMark Brown# Original author: Dave Martin <Dave.Martin@arm.com> 525f47e3eSMark Brown 625f47e3eSMark Brownset -ue 725f47e3eSMark Brown 825f47e3eSMark BrownNR_CPUS=`nproc` 925f47e3eSMark Brown 1025f47e3eSMark Brownpids= 1125f47e3eSMark Brownlogs= 1225f47e3eSMark Brown 1325f47e3eSMark Browncleanup () { 1425f47e3eSMark Brown trap - INT TERM CHLD 1525f47e3eSMark Brown set +e 1625f47e3eSMark Brown 1725f47e3eSMark Brown if [ -n "$pids" ]; then 1825f47e3eSMark Brown kill $pids 1925f47e3eSMark Brown wait $pids 2025f47e3eSMark Brown pids= 2125f47e3eSMark Brown fi 2225f47e3eSMark Brown 2325f47e3eSMark Brown if [ -n "$logs" ]; then 2425f47e3eSMark Brown cat $logs 2525f47e3eSMark Brown rm $logs 2625f47e3eSMark Brown logs= 2725f47e3eSMark Brown fi 2825f47e3eSMark Brown} 2925f47e3eSMark Brown 3025f47e3eSMark Browninterrupt () { 3125f47e3eSMark Brown cleanup 3225f47e3eSMark Brown exit 0 3325f47e3eSMark Brown} 3425f47e3eSMark Brown 3525f47e3eSMark Brownchild_died () { 3625f47e3eSMark Brown cleanup 3725f47e3eSMark Brown exit 1 3825f47e3eSMark Brown} 3925f47e3eSMark Brown 4025f47e3eSMark Browntrap interrupt INT TERM EXIT 4125f47e3eSMark Browntrap child_died CHLD 4225f47e3eSMark Brown 4325f47e3eSMark Brownfor x in `seq 0 $((NR_CPUS * 4))`; do 4425f47e3eSMark Brown log=`mktemp` 4525f47e3eSMark Brown logs=$logs\ $log 4625f47e3eSMark Brown ./fpsimd-test >$log & 4725f47e3eSMark Brown pids=$pids\ $! 4825f47e3eSMark Browndone 4925f47e3eSMark Brown 5025f47e3eSMark Brown# Wait for all child processes to be created: 5125f47e3eSMark Brownsleep 10 5225f47e3eSMark Brown 5325f47e3eSMark Brownwhile :; do 5425f47e3eSMark Brown kill -USR1 $pids 5525f47e3eSMark Browndone & 5625f47e3eSMark Brownpids=$pids\ $! 5725f47e3eSMark Brown 5825f47e3eSMark Brownwait 5925f47e3eSMark Brown 6025f47e3eSMark Brownexit 1 61