# 
# Shell-Skript zur Anzeige von CPU-Taktfrequenzinformationen
#
# Erstens: Anzahl der CPUs bestimmen

ANZ=0
while [ -d /sys/devices/system/cpu/cpu$ANZ ]
do
    ANZ=$((ANZ + 1))
done

echo
echo "Der Computer hat insgesamt $ANZ CPU(s)"

# Schleife, um Daten für alle CPUs auszugeben
CPU_NUMMER=0
until [ "$CPU_NUMMER" -ge "$ANZ" ]
do
# CPU Frequenzen auslesen, welche in GHz oder MHz umgerechnet werden sollen
# dazu: Array anlegen
# CPU_FREQ[0] = cpu_info_min_freq
# CPU_FREQ[1] = cpu_info_max_freq
# CPU_FREQ[2] = scaling_min_freq
# CPU_FREQ[3] = scaling_max_freq

CPU_FREQ[0]=`cat /sys/devices/system/cpu/cpu$CPU_NUMMER/cpufreq/cpuinfo_min_freq`
CPU_FREQ[1]=`cat /sys/devices/system/cpu/cpu$CPU_NUMMER/cpufreq/cpuinfo_max_freq`
CPU_FREQ[2]=`cat /sys/devices/system/cpu/cpu$CPU_NUMMER/cpufreq/scaling_min_freq`
CPU_FREQ[3]=`cat /sys/devices/system/cpu/cpu$CPU_NUMMER/cpufreq/scaling_max_freq`

CPU_GOV=`cat /sys/devices/system/cpu/cpu$CPU_NUMMER/cpufreq/scaling_available_governors`
CUR_GOV=`cat /sys/devices/system/cpu/cpu$CPU_NUMMER/cpufreq/scaling_governor`
CUR_MOEGLICH=`cat /sys/devices/system/cpu/cpu$CPU_NUMMER/cpufreq/scaling_available_frequencies`

# Frequenzen in MHz bzw. GHz umrechnen

ZAEHLER=0
while [ "$ZAEHLER" -lt 4 ]
do
	CPU_TEMP=${CPU_FREQ["$ZAEHLER"]}
	if [ $CPU_TEMP -ge 1000000 ]
	then
		CPU_AUS["$ZAEHLER"]=`expr $CPU_TEMP / 1000000`
		CPU_AUS_NK["$ZAEHLER"]=`expr $CPU_TEMP % 1000000`\ GHz
	else
		CPU_AUS["$ZAEHLER"]=`expr $CPU_TEMP / 1000`\ MHz
	fi
	ZAEHLER=`expr $ZAEHLER + 1`
done

# Ausgabe der Ergebnisse
echo
echo "Dies ist die Taktfrequenz etc. für die `expr $CPU_NUMMER + 1`. CPU."
echo
echo "Die CPU läuft mit minimal ${CPU_AUS[0]} und maximal ${CPU_AUS[1]},${CPU_AUS_NK[1]}."
echo
echo "Auf dem System sind folgende Governors vorhanden:"
echo $CPU_GOV
echo
echo "Momentan läuft Ihr System mit folgendem Governor: \"$CUR_GOV\""
echo
echo "Der \"$CUR_GOV\" Governor darf zur Zeit die Takfrequenz im Bereich von ${CPU_AUS[2]} bis ${CPU_AUS[3]},${CPU_AUS_NK[3]} skalieren."
echo "In diesem Bereich sind dabei folgende Frequenzen (in Hz) einstellbar: $CUR_MOEGLICH"
echo
# CPU_NUMMER erhöhen
CPU_NUMMER=$((CPU_NUMMER + 1))
done
