1*4126bde0SMark Brown#!/bin/bash 2*4126bde0SMark Brown# SPDX-License-Identifier: GPL-2.0-only 3*4126bde0SMark Brown# Copyright (C) 2015-2019 ARM Limited. 4*4126bde0SMark Brown# Original author: Dave Martin <Dave.Martin@arm.com> 5*4126bde0SMark Brown 6*4126bde0SMark Brownset -ue 7*4126bde0SMark Brown 8*4126bde0SMark BrownNR_CPUS=`nproc` 9*4126bde0SMark Brown 10*4126bde0SMark Brownpids= 11*4126bde0SMark Brownlogs= 12*4126bde0SMark Brown 13*4126bde0SMark Browncleanup () { 14*4126bde0SMark Brown trap - INT TERM CHLD 15*4126bde0SMark Brown set +e 16*4126bde0SMark Brown 17*4126bde0SMark Brown if [ -n "$pids" ]; then 18*4126bde0SMark Brown kill $pids 19*4126bde0SMark Brown wait $pids 20*4126bde0SMark Brown pids= 21*4126bde0SMark Brown fi 22*4126bde0SMark Brown 23*4126bde0SMark Brown if [ -n "$logs" ]; then 24*4126bde0SMark Brown cat $logs 25*4126bde0SMark Brown rm $logs 26*4126bde0SMark Brown logs= 27*4126bde0SMark Brown fi 28*4126bde0SMark Brown} 29*4126bde0SMark Brown 30*4126bde0SMark Browninterrupt () { 31*4126bde0SMark Brown cleanup 32*4126bde0SMark Brown exit 0 33*4126bde0SMark Brown} 34*4126bde0SMark Brown 35*4126bde0SMark Brownchild_died () { 36*4126bde0SMark Brown cleanup 37*4126bde0SMark Brown exit 1 38*4126bde0SMark Brown} 39*4126bde0SMark Brown 40*4126bde0SMark Browntrap interrupt INT TERM EXIT 41*4126bde0SMark Brown 42*4126bde0SMark Brownfor x in `seq 0 $((NR_CPUS * 4))`; do 43*4126bde0SMark Brown log=`mktemp` 44*4126bde0SMark Brown logs=$logs\ $log 45*4126bde0SMark Brown ./ssve-test >$log & 46*4126bde0SMark Brown pids=$pids\ $! 47*4126bde0SMark Browndone 48*4126bde0SMark Brown 49*4126bde0SMark Brown# Wait for all child processes to be created: 50*4126bde0SMark Brownsleep 10 51*4126bde0SMark Brown 52*4126bde0SMark Brownwhile :; do 53*4126bde0SMark Brown kill -USR1 $pids 54*4126bde0SMark Browndone & 55*4126bde0SMark Brownpids=$pids\ $! 56*4126bde0SMark Brown 57*4126bde0SMark Brownwait 58*4126bde0SMark Brown 59*4126bde0SMark Brownexit 1 60