brintos

brintos / linux-shallow public Read only

0
0
Text · 2.7 KiB · fe37df7 Raw
155 lines · bash
1#!/bin/bash2# SPDX-License-Identifier: GPL-2.03#4# Test governors5 6# protect against multiple inclusion7if [ $FILE_GOVERNOR ]; then8	return 09else10	FILE_GOVERNOR=DONE11fi12 13source cpu.sh14source cpufreq.sh15 16CUR_GOV=17CUR_FREQ=18 19# Find governor's directory path20# $1: policy, $2: governor21find_gov_directory()22{23	if [ -d $CPUFREQROOT/$2 ]; then24		printf "$CPUFREQROOT/$2\n"25	elif [ -d $CPUFREQROOT/$1/$2 ]; then26		printf "$CPUFREQROOT/$1/$2\n"27	else28		printf "INVALID\n"29	fi30}31 32# $1: policy33find_current_governor()34{35	cat $CPUFREQROOT/$1/scaling_governor36}37 38# $1: policy39backup_governor()40{41	CUR_GOV=$(find_current_governor $1)42 43	printf "Governor backup done for $1: $CUR_GOV\n"44 45	if [ $CUR_GOV == "userspace" ]; then46		CUR_FREQ=$(find_current_freq $1)47		printf "Governor frequency backup done for $1: $CUR_FREQ\n"48	fi49 50	printf "\n"51}52 53# $1: policy54restore_governor()55{56	__switch_governor $1 $CUR_GOV57 58	printf "Governor restored for $1 to $CUR_GOV\n"59 60	if [ $CUR_GOV == "userspace" ]; then61		set_cpu_frequency $1 $CUR_FREQ62		printf "Governor frequency restored for $1: $CUR_FREQ\n"63	fi64 65	printf "\n"66}67 68# param:69# $1: policy, $2: governor70__switch_governor()71{72	echo $2 > $CPUFREQROOT/$1/scaling_governor73}74 75# param:76# $1: cpu, $2: governor77__switch_governor_for_cpu()78{79	echo $2 > $CPUROOT/$1/cpufreq/scaling_governor80}81 82# SWITCH GOVERNORS83 84# $1: cpu, $2: governor85switch_governor()86{87	local filepath=$CPUFREQROOT/$1/scaling_available_governors88 89	# check if governor is available90	local found=$(cat $filepath | grep $2 | wc -l)91	if [ $found = 0 ]; then92		echo 1;93		return94	fi95 96	__switch_governor $1 $297	echo 0;98}99 100# $1: policy, $2: governor101switch_show_governor()102{103	cur_gov=find_current_governor104	if [ $cur_gov == "userspace" ]; then105		cur_freq=find_current_freq106	fi107 108	# switch governor109	__switch_governor $1 $2110 111	printf "\nSwitched governor for $1 to $2\n\n"112 113	if [ $2 == "userspace" -o $2 == "powersave" -o $2 == "performance" ]; then114		printf "No files to read for $2 governor\n\n"115		return116	fi117 118	# show governor files119	local govpath=$(find_gov_directory $1 $2)120	read_cpufreq_files_in_dir $govpath121}122 123# $1: function to be called, $2: policy124call_for_each_governor()125{126	local filepath=$CPUFREQROOT/$2/scaling_available_governors127 128	# Exit if cpu isn't managed by cpufreq core129	if [ ! -f $filepath ]; then130		return;131	fi132 133	backup_governor $2134 135	local governors=$(cat $filepath)136	printf "Available governors for $2: $governors\n"137 138	for governor in $governors; do139		$1 $2 $governor140	done141 142	restore_governor $2143}144 145# $1: loop count146shuffle_governors_for_all_cpus()147{148	printf "** Test: Running ${FUNCNAME[0]} for $1 loops **\n\n"149 150	for i in `seq 1 $1`; do151		for_each_policy call_for_each_governor switch_show_governor152	done153	printf "%s\n\n" "------------------------------------------------"154}155