#!/sbin/runscript # Copyright 1999-2004 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/sys-power/cpudyn/files/cpudyn.init,v 1.1 2005/03/14 22:37:27 ciaranm Exp $ # # Based on the Debian init script written by Celso Gonzalez , # and on the cpufreqd Gentoo init script written by Robert Gogolok . # Heavily modified by Robin H. Johnson to ensure correct # start only under support conditions # More preconditions by Karl Trygve Kalleberg # DAEMON=/usr/sbin/cpudynd PIDFILE=/var/run/cpudynd.pid opts="${opts} min max dynamic" depend() { need localmount } checkconfig() { local CPUFREQ_FILES="${CPUFREQ_24} ${CPUFREQ_25} ${CPUFREQ_ACPI}" local CPUFREQ_FILE="" for i in ${CPUFREQ_FILES}; do [ -e ${i} ] && CPUFREQ_FILE="${i}" && break ; done if [ -z "${CPUFREQ_FILE}" ]; then eerror "Neither CPUFreq nor ACPI throttling support were found" return 1 fi if [ "${CPUFREQ_FILE}" = "${CPUFREQ_ACPI}" ]; then # see if the file says we are supported or not grep 'not supported' ${CPUFREQ_ACPI} 2>&1 >/dev/null retval="$?" if [ $retval -eq 0 ]; then eerror "ACPI throttling support found, but hardware doesn't support it" return 1 fi # now check that we can write to the file local acpistate=`grep 'active state' ${CPUFREQ_ACPI} | cut -dT -f2-` echo $acpistate > ${CPUFREQ_ACPI} retval="$?" if [ $retval -ne 0 ]; then eerror "Writing to ACPI throttling file failed" return 1 fi fi # CPUFREQ_25 has more than one entry, hence the grep -- karltk if [ ! -z "$(echo ${CPUFREQ_25} | grep ${CPUFREQ_FILE})" ]; then # Silently try to load the governors; shouldn't hurt if they're already there modprobe -q cpufreq_performance modprobe -q cpufreq_powersave modprobe -q cpufreq_userspace modprobe -q cpufreq_ondemand fi return 0 } start() { local CPUDYN_OPTS="" if [ -n "$INTERVAL" ]; then CPUDYN_OPTS="$CPUDYN_OPTS -i $INTERVAL"; fi if [ -n "$CPU_UP" -a -n "$CPU_DOWN" ]; then CPUDYN_OPTS="$CPUDYN_OPTS -p $CPU_UP $CPU_DOWN"; fi if [ -n "$THROTTLING_LOW" ]; then CPUDYN_OPTS="$CPUDYN_OPTS -l $THROTTLING_LOW"; fi if [ -n "$TIMEOUT" ]; then CPUDYN_OPTS="$CPUDYN_OPTS -t $TIMEOUT"; fi if [ -n "$DISKS" ]; then CPUDYN_OPTS="$CPUDYN_OPTS -h $DISKS"; fi if [ "$NICE" == "yes" ]; then CPUDYN_OPTS="$CPUDYN_OPTS -nice"; fi ebegin "Starting cpudynd" if checkconfig; then start-stop-daemon --start --quiet --pidfile $PIDFILE \ --background --make-pidfile --exec $DAEMON -- $CPUDYN_OPTS eend $? else eend 1 fi } stop() { ebegin "Stopping cpudynd" start-stop-daemon --stop --quiet --pidfile $PIDFILE \ --exec $DAEMON && rm -f $PIDFILE eend $? } min() { ebegin "Forcing minimal speed" kill -USR2 $(cat ${PIDFILE}) eend $? } max() { ebegin "Forcing maximal speed" kill -USR1 $(cat ${PIDFILE}) eend $? } dynamic() { ebegin "Resetting to default dynamic speed" kill -HUP $(cat ${PIDFILE}) eend $? } # vim:ts=4 noexpandtab: