xref: /aosp_15_r20/platform_testing/scripts/perf-load-setup/spin-n-threads.sh (revision dd0948b35e70be4c0246aabd6c72554a5eb8b22a)
1*dd0948b3SAndroid Build Coastguard Worker#!/system/bin/sh
2*dd0948b3SAndroid Build Coastguard Worker# Usage: spin_n_threads.sh <num_threads> [<nice>]
3*dd0948b3SAndroid Build Coastguard Worker#        spin_n_threads.sh kill
4*dd0948b3SAndroid Build Coastguard Worker
5*dd0948b3SAndroid Build Coastguard WorkerTGID_FILE=/data/local/tmp/spin_n_threads_tgid.txt
6*dd0948b3SAndroid Build Coastguard Worker
7*dd0948b3SAndroid Build Coastguard Workerspin_loop() {
8*dd0948b3SAndroid Build Coastguard Worker  while :
9*dd0948b3SAndroid Build Coastguard Worker  do
10*dd0948b3SAndroid Build Coastguard Worker    NUM=$(expr 1 + 1)
11*dd0948b3SAndroid Build Coastguard Worker  done
12*dd0948b3SAndroid Build Coastguard Worker}
13*dd0948b3SAndroid Build Coastguard Worker
14*dd0948b3SAndroid Build Coastguard Workerclean_up() {
15*dd0948b3SAndroid Build Coastguard Worker  trap - SIGINT SIGTERM SIGKILL
16*dd0948b3SAndroid Build Coastguard Worker  kill -- -$$
17*dd0948b3SAndroid Build Coastguard Worker}
18*dd0948b3SAndroid Build Coastguard Worker
19*dd0948b3SAndroid Build Coastguard WorkerNUM_THREADS=1
20*dd0948b3SAndroid Build Coastguard Workerif [ ! -z ${1} ]; then
21*dd0948b3SAndroid Build Coastguard Worker  if [ ${1} == "kill" ]; then
22*dd0948b3SAndroid Build Coastguard Worker    TGID=$(cat ${TGID_FILE})
23*dd0948b3SAndroid Build Coastguard Worker    kill -- -${TGID}
24*dd0948b3SAndroid Build Coastguard Worker    exit 0
25*dd0948b3SAndroid Build Coastguard Worker  fi
26*dd0948b3SAndroid Build Coastguard Worker
27*dd0948b3SAndroid Build Coastguard Worker  if [ ${1} -gt 1 ]; then
28*dd0948b3SAndroid Build Coastguard Worker    NUM_THREADS=${1}
29*dd0948b3SAndroid Build Coastguard Worker  else
30*dd0948b3SAndroid Build Coastguard Worker    exit 0
31*dd0948b3SAndroid Build Coastguard Worker  fi
32*dd0948b3SAndroid Build Coastguard Workerfi
33*dd0948b3SAndroid Build Coastguard Worker
34*dd0948b3SAndroid Build Coastguard Workerif [ ! -z ${2} ]; then
35*dd0948b3SAndroid Build Coastguard Worker renice -n ${2} -p $$
36*dd0948b3SAndroid Build Coastguard Workerfi
37*dd0948b3SAndroid Build Coastguard Worker
38*dd0948b3SAndroid Build Coastguard Worker# Register cleanup on trap
39*dd0948b3SAndroid Build Coastguard Workertrap clean_up SIGINT SIGTERM SIGKILL
40*dd0948b3SAndroid Build Coastguard Workerfor i in $(seq 1 $NUM_THREADS ); do
41*dd0948b3SAndroid Build Coastguard Worker  spin_loop &
42*dd0948b3SAndroid Build Coastguard Workerdone
43*dd0948b3SAndroid Build Coastguard Worker
44*dd0948b3SAndroid Build Coastguard Workerecho $$ > ${TGID_FILE}
45