74 lines
1.5 KiB
Plaintext
74 lines
1.5 KiB
Plaintext
|
#! /bin/sh
|
||
|
### BEGIN INIT INFO
|
||
|
# Provides: ondemand
|
||
|
# Required-Start: $remote_fs $all
|
||
|
# Required-Stop:
|
||
|
# Default-Start: 2 3 4 5
|
||
|
# Default-Stop:
|
||
|
# Short-Description: Set the CPU Frequency Scaling governor to "ondemand"
|
||
|
### END INIT INFO
|
||
|
|
||
|
# Don't run if we're going to start an Android LXC container:
|
||
|
[ ! -f /etc/init/lxc-android-config.conf ] || exit 0
|
||
|
|
||
|
PATH=/sbin:/usr/sbin:/bin:/usr/bin
|
||
|
|
||
|
. /lib/init/vars.sh
|
||
|
. /lib/lsb/init-functions
|
||
|
|
||
|
AVAILABLE="/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors"
|
||
|
DOWN_FACTOR="/sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor"
|
||
|
|
||
|
case "$1" in
|
||
|
start)
|
||
|
start-stop-daemon --start --background --exec /etc/init.d/ondemand -- background
|
||
|
;;
|
||
|
background)
|
||
|
sleep 60 # probably enough time for desktop login
|
||
|
|
||
|
[ -f $AVAILABLE ] || exit 0
|
||
|
read governors < $AVAILABLE
|
||
|
case $governors in
|
||
|
*interactive*)
|
||
|
GOVERNOR="interactive"
|
||
|
break
|
||
|
;;
|
||
|
*ondemand*)
|
||
|
GOVERNOR="ondemand"
|
||
|
case $(uname -m) in
|
||
|
ppc64*)
|
||
|
SAMPLING=100
|
||
|
;;
|
||
|
esac
|
||
|
break
|
||
|
;;
|
||
|
*powersave*)
|
||
|
GOVERNOR="powersave"
|
||
|
break
|
||
|
;;
|
||
|
*)
|
||
|
exit 0
|
||
|
;;
|
||
|
esac
|
||
|
|
||
|
for CPUFREQ in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
|
||
|
do
|
||
|
[ -f $CPUFREQ ] || continue
|
||
|
echo -n $GOVERNOR > $CPUFREQ
|
||
|
done
|
||
|
if [ -n "$SAMPLING" ] && [ -f $DOWN_FACTOR ]; then
|
||
|
echo -n $SAMPLING > $DOWN_FACTOR
|
||
|
fi
|
||
|
;;
|
||
|
restart|reload|force-reload)
|
||
|
echo "Error: argument '$1' not supported" >&2
|
||
|
exit 3
|
||
|
;;
|
||
|
stop)
|
||
|
;;
|
||
|
*)
|
||
|
echo "Usage: $0 start|stop" >&2
|
||
|
exit 3
|
||
|
;;
|
||
|
esac
|