#!/bin/sh
# Startup script for cpuspeed
#
# chkconfig: 12345 06 99
# description: Run dynamic CPU speed daemon

# Source function library.
. /etc/rc.d/init.d/functions

[ -f /usr/sbin/cpuspeed ] || exit 0

prog="cpuspeed"

# Get config.
if [ -f /etc/cpuspeed.conf ]; then
        . /etc/cpuspeed.conf
fi

start() {
	if [ ! -f /var/lock/subsys/cpuspeed ]; then
		# Attempt to load scaling_driver if not loaded but it is configured
		if [ ! -f /sys/devices/system/cpu/cpu0/cpufreq/scaling_driver ]; then
			if [ -n "$DRIVER" ]; then
				/sbin/modprobe "$DRIVER"
			else
				# use ACPI as a fallback if its available.
				if [ -f /proc/acpi/processor/CPU0/throttling ]; then
					# Check we have throttling states available.
					thr=`head -n1 /proc/acpi/processor/CPU0/throttling`
					if [ "$thr" != "<not supported>" ]; then
						/sbin/modprobe acpi-cpufreq
					fi
				fi
			fi
		fi

		# If we get this far with no driver, we must have no ACPI. We're doomed.
		[ ! -f /sys/devices/system/cpu/cpu0/cpufreq/scaling_driver ] && return 0

		echo -n $"Starting $prog: "

		daemon cpuspeed -d $OPTS
		RETVAL=$?
		echo
		[ $RETVAL = 0 ] && touch /var/lock/subsys/cpuspeed
	else
		return 0
	fi
	return $RETVAL
}

stop() {
	if test "x`pidof cpuspeed`" != x; then
		echo -n $"Stopping $prog: "
		killproc cpuspeed -USR1
		killproc cpuspeed -INT
		echo
	fi
	if test "x`pidof cpuspeed`" != x; then
		killproc cpuspeed
	fi
	RETVAL=$?
	[ $RETVAL = 0 ] && rm -f /var/lock/subsys/cpuspeed
	return $RETVAL
}

case "$1" in
	start)
	    start
	    ;;
	
	stop)
	    stop
	    ;;
	
	status)
	    status cpuspeed
	    ;;
	restart)
	    stop
	    start
	    ;;
	condrestart)
	    if test "x`pidof cpuspeed`" != x; then
		stop
		start
	    fi
	    ;;
	
	*)
	    echo $"Usage: $0 {start|stop|restart|condrestart|status}"
	    exit 1

esac

exit $RETVAL
