Linux Audio

Check our new training course

Loading...
Note: File does not exist in v4.10.11.
  1#!/bin/bash
  2# SPDX-License-Identifier: GPL-2.0
  3
  4# Kselftest framework requirement - SKIP code is 4.
  5ksft_skip=4
  6
  7stress_fork()
  8{
  9	while true ; do
 10		/usr/bin/true
 11		sleep 0.01
 12	done
 13}
 14
 15stress_subsys()
 16{
 17	local verb=+
 18	while true ; do
 19		echo $verb$subsys_ctrl >$sysfs/cgroup.subtree_control
 20		[ $verb = "+" ] && verb=- || verb=+
 21		# incommensurable period with other stresses
 22		sleep 0.011
 23	done
 24}
 25
 26init_and_check()
 27{
 28	sysfs=`mount -t cgroup2 | head -1 | awk '{ print $3 }'`
 29	if [ ! -d "$sysfs" ]; then
 30		echo "Skipping: cgroup2 is not mounted" >&2
 31		exit $ksft_skip
 32	fi
 33
 34	if ! echo +$subsys_ctrl >$sysfs/cgroup.subtree_control ; then
 35		echo "Skipping: cannot enable $subsys_ctrl in $sysfs" >&2
 36		exit $ksft_skip
 37	fi
 38
 39	if ! echo -$subsys_ctrl >$sysfs/cgroup.subtree_control ; then
 40		echo "Skipping: cannot disable $subsys_ctrl in $sysfs" >&2
 41		exit $ksft_skip
 42	fi
 43}
 44
 45declare -a stresses
 46declare -a stress_pids
 47duration=5
 48rc=0
 49subsys_ctrl=cpuset
 50sysfs=
 51
 52while getopts c:d:hs: opt; do
 53	case $opt in
 54	c)
 55		subsys_ctrl=$OPTARG
 56		;;
 57	d)
 58		duration=$OPTARG
 59		;;
 60	h)
 61		echo "Usage $0 [ -s stress ] ... [ -d duration ] [-c controller] cmd args .."
 62		echo -e "\t default duration $duration seconds"
 63		echo -e "\t default controller $subsys_ctrl"
 64		exit
 65		;;
 66	s)
 67		func=stress_$OPTARG
 68		if [ "x$(type -t $func)" != "xfunction" ] ; then
 69			echo "Unknown stress $OPTARG"
 70			exit 1
 71		fi
 72		stresses+=($func)
 73		;;
 74	esac
 75done
 76shift $((OPTIND - 1))
 77
 78init_and_check
 79
 80for s in ${stresses[*]} ; do
 81	$s &
 82	stress_pids+=($!)
 83done
 84
 85
 86time=0
 87start=$(date +%s)
 88
 89while [ $time -lt $duration ] ; do
 90	$*
 91	rc=$?
 92	[ $rc -eq 0 ] || break
 93	time=$(($(date +%s) - $start))
 94done
 95
 96for pid in ${stress_pids[*]} ; do
 97	kill -SIGTERM $pid
 98	wait $pid
 99done
100
101exit $rc