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