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