xref: /linux/tools/testing/selftests/cpufreq/cpu.sh (revision 088fecfbb2c8a3890918fc614a7e1e1ccdd16c83)
1#!/bin/bash
2# SPDX-License-Identifier: GPL-2.0
3#
4# CPU helpers
5
6# protect against multiple inclusion
7if [ $FILE_CPU ]; then
8	return 0
9else
10	FILE_CPU=DONE
11fi
12
13source cpufreq.sh
14
15for_each_cpu()
16{
17	cpus=$(ls $CPUROOT | grep "cpu[0-9].*")
18	for cpu in $cpus; do
19		$@ $cpu
20	done
21}
22
23for_each_non_boot_cpu()
24{
25	cpus=$(ls $CPUROOT | grep "cpu[1-9].*")
26	for cpu in $cpus; do
27		$@ $cpu
28	done
29}
30
31#$1: cpu
32offline_cpu()
33{
34	printf "Offline $1\n"
35	echo 0 > $CPUROOT/$1/online
36}
37
38#$1: cpu
39online_cpu()
40{
41	printf "Online $1\n"
42	echo 1 > $CPUROOT/$1/online
43}
44
45#$1: cpu
46reboot_cpu()
47{
48	offline_cpu $1
49	online_cpu $1
50}
51
52# Reboot CPUs
53# param: number of times we want to run the loop
54reboot_cpus()
55{
56	printf "** Test: Running ${FUNCNAME[0]} for $1 loops **\n\n"
57
58	for i in `seq 1 $1`; do
59		for_each_non_boot_cpu offline_cpu
60		for_each_non_boot_cpu online_cpu
61		printf "\n"
62	done
63
64	printf "\n%s\n\n" "------------------------------------------------"
65}
66
67# Prints warning for all CPUs with missing cpufreq directory
68print_unmanaged_cpus()
69{
70	for_each_cpu cpu_should_have_cpufreq_directory
71}
72
73# Counts CPUs with cpufreq directories
74count_cpufreq_managed_cpus()
75{
76	count=0;
77
78	for cpu in `ls $CPUROOT | grep "cpu[0-9].*"`; do
79		if [ -d $CPUROOT/$cpu/cpufreq ]; then
80			let count=count+1;
81		fi
82	done
83
84	echo $count;
85}
86