#!/bin/bash # # CPU helpers # protect against multiple inclusion if [ $FILE_CPU ]; then return 0 else FILE_CPU=DONE fi source cpufreq.sh offline_cpu() { echo 0 > /sys/devices/system/cpu/$1/online } online_cpu() { echo 1 > /sys/devices/system/cpu/$1/online } offline_online_cpu() { offline_cpu $1 online_cpu $1 } # Offline + online CPUs # param: number of times we want to run the loop hotplug_1_by_1() { echo "** Test: Running ${FUNCNAME[0]} for $1 loops **" echo "" for i in `seq 1 $1`; do for_each_non_boot_cpu offline_online_cpu done echo "------------------------------------------------" echo "" } # Offline all CPUs, followed by online all CPUs # param: number of times we want to run the loop hotplug_together() { echo "** Test: Running ${FUNCNAME[0]} for $1 loops **" echo "" for i in `seq 1 $1`; do for_each_non_boot_cpu offline_cpu for_each_non_boot_cpu online_cpu done echo "------------------------------------------------" echo "" } for_each_cpu() { cpus=$(ls $CPU_PATH | grep "cpu[0-9].*") for cpu in $cpus; do $@ $cpu done } for_each_cpu_concurrent() { cpus=$(ls $CPU_PATH | grep "cpu[0-9].*") for cpu in $cpus; do $@ $cpu & done } for_each_non_boot_cpu() { cpus=$(ls $CPU_PATH | grep "cpu[1-9].*") for cpu in $cpus; do $@ $cpu done } # Prints warning for all CPUs with missing cpufreq directory print_unmanaged_cpus() { for_each_cpu cpu_should_have_cpufreq_directory } # Counts CPUs with cpufreq directories count_cpufreq_managed_cpus() { count=0; for cpu in `ls $CPU_PATH | grep "cpu[0-9].*"`; do if [ -d /sys/devices/system/cpu/$cpu/cpufreq ]; then let count=count+1; fi done echo $count; }