summaryrefslogtreecommitdiffstats
path: root/cpufreq.init
diff options
context:
space:
mode:
Diffstat (limited to 'cpufreq.init')
-rw-r--r--cpufreq.init69
1 files changed, 69 insertions, 0 deletions
diff --git a/cpufreq.init b/cpufreq.init
new file mode 100644
index 0000000..e3a1a8f
--- /dev/null
+++ b/cpufreq.init
@@ -0,0 +1,69 @@
+#!/bin/bash
+#
+### BEGIN INIT INFO
+# Provides: cpufreq
+# Default-Start: 2 3 4 5
+# Short-Description: Set CPU frequency settings
+# Description: Set CPU frequency settings
+### END INIT INFO
+
+# Source function library.
+. /etc/rc.d/init.d/functions
+
+RETVAL=0
+
+start() {
+ gprintf "Setting CPU frequency settings: "
+ touch /var/lock/subsys/cpufreq
+ test -f /etc/sysconfig/cpufreq && . /etc/sysconfig/cpufreq
+ for cpu in /sys/devices/system/cpu/* ; do
+ [ "x$GOVERNOR" != "x" ] && [ -f $cpu/cpufreq/scaling_governor ] && echo $GOVERNOR > $cpu/cpufreq/scaling_governor
+ [ "x$MAX_FREQ" != "x" ] && [ -f $cpu/cpufreq/scaling_max_freq ] && echo $MAX_FREQ > $cpu/cpufreq/scaling_max_freq
+ [ "x$MIN_FREQ" != "x" ] && [ -f $cpu/cpufreq/scaling_min_freq ] && echo $MIN_FREQ > $cpu/cpufreq/scaling_min_freq
+ done
+ success
+ echo
+}
+
+real_stop() {
+ gprintf "Resetting CPU frequency settings: "
+ # make sure no governor module is in use first
+ # by switching to userspace governor (because it's built-in and won't modify frequency)
+ for cpu in /sys/devices/system/cpu/* ; do
+ [ -f $cpu/cpufreq/scaling_governor ] && echo userspace > $cpu/cpufreq/scaling_governor
+ done
+ rm -f /var/lock/subsys/cpufreq
+ success
+ echo
+}
+
+restart() {
+ real_stop
+ start
+}
+
+case "$1" in
+ start)
+ start
+ ;;
+ stop)
+ ;;
+ restart|reload)
+ restart
+ ;;
+ condrestart)
+ if [ -f /var/lock/subsys/cpufreq ]; then
+ restart
+ fi
+ ;;
+ status)
+ [ -f /var/lock/subsys/cpufreq ]
+ RETVAL=$?
+ ;;
+ *)
+ gprintf "Usage: %s {start|stop|restart|condrestart|status}\n" `basename $0`
+ RETVAL=1
+ ;;
+esac
+
+exit $RETVAL