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