blob: 2d03c8057c11085d170a586cfc22a13568bdbb19 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
#!/bin/bash
#
# Test governors
# protect against multiple inclusion
if [ $FILE_GOVERNOR ]; then
return 0
else
FILE_GOVERNOR=DONE
fi
source cpu.sh
source cpufreq.sh
# Find governor's directory path
# $1: cpu, $2: governor
find_gov_directory()
{
if [ -d $GLOBAL_CPUFREQ -a -d $GLOBAL_CPUFREQ/$2 ]; then
echo "$GLOBAL_CPUFREQ/$2"
elif [ -d $CPU_PATH/$1/cpufreq -a -d $CPU_PATH/$1/cpufreq/$2 ]; then
echo "$CPU_PATH/$1/cpufreq/$2"
else
echo "INVALID"
fi
}
# SWITCH GOVERNORS
# param:
# $1: cpu, $2: governor
__switch_governor()
{
echo $2 > $CPU_PATH/$1/cpufreq/scaling_governor
}
# $1: cpu, $2: governor
switch_governor()
{
local filepath=$CPU_PATH/$1/cpufreq/scaling_available_governors
# check if governor is available
local found=$(cat $filepath | grep $2 | wc -l)
if [ $found = 0 ]; then
echo 1;
return
fi
__switch_governor $1 $2
echo 0;
}
# $1: cpu, $2: governor
switch_show_governor()
{
# switch governor
__switch_governor $1 $2
# show governor files
local govpath=$(find_gov_directory $1 $2)
if [ $govpath != "INVALID" ]; then
__read_cpufreq_files $govpath
fi
}
# $1: function to be called, $2: cpu
call_for_each_governor() {
local filepath=$CPU_PATH/$2/cpufreq/scaling_available_governors
# Exit if cpu isn't mananged by cpufreq core
if [ ! -f $filepath ]; then
return;
fi
local governors=$(cat $filepath)
echo "Available governors for $2: $governors"
for governor in $governors; do
$1 $2 $governor
done
}
# $1: loop count
shuffle_governors_for_all_cpus()
{
echo "** Test: Running ${FUNCNAME[0]} for $1 loops **"
echo ""
for i in `seq 1 $1`; do
for_each_cpu call_for_each_governor switch_show_governor
done
echo "------------------------------------------------"
echo ""
}
|