83 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/sh
 | 
						|
 | 
						|
# Copyright (c) 2000-2002 Massachusetts Institute of Technology
 | 
						|
#
 | 
						|
# This program is free software; you can redistribute it and/or modify
 | 
						|
# it under the terms of the GNU General Public License as published by
 | 
						|
# the Free Software Foundation; either version 2 of the License, or (at
 | 
						|
# your option) any later version.
 | 
						|
#
 | 
						|
# This program is distributed in the hope that it will be useful, but
 | 
						|
# WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
						|
# General Public License for more details.
 | 
						|
#
 | 
						|
# You should have received a copy of the GNU General Public License
 | 
						|
# along with this program; if not, write to the Free Software
 | 
						|
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
 | 
						|
# 02111-1307, USA.
 | 
						|
 | 
						|
set -e
 | 
						|
 | 
						|
# The APMD_DRIVES setting specifies the drives to be changed.  Set
 | 
						|
# this to an empty string to disable any changes.
 | 
						|
#APMD_DRIVES=
 | 
						|
 | 
						|
# The spindown timeout is set to the value of APMD_SPINDOWN when the
 | 
						|
# computer is running on battery power.  When the computer is on AC
 | 
						|
# power, the spindown timeout is disabled.  The number specified here
 | 
						|
# is encoded in a complicated way.  See the man page for hdparm(8) for
 | 
						|
# details.  For small timeouts, numbers between 1 and 240 specify
 | 
						|
# multiples of 5 seconds.  So the default value of 18 means 18*5=90
 | 
						|
# seconds, or 1.5 minutes.
 | 
						|
APMD_SPINDOWN=18
 | 
						|
 | 
						|
HDPARM=/sbin/hdparm
 | 
						|
[ -x "${HDPARM}" ] || exit 0
 | 
						|
 | 
						|
[ -n "${APMD_DRIVES}" ] || exit 0
 | 
						|
 | 
						|
for DRIVE in $APMD_DRIVES; do
 | 
						|
  [ -b "${DRIVE}" ] || exit 0
 | 
						|
done
 | 
						|
 | 
						|
[ "${APMD_SPINDOWN}" -gt 0 ] || exit 0
 | 
						|
 | 
						|
power_conserve ()
 | 
						|
{
 | 
						|
    # Set IDE hard disk spindown time to a short time.
 | 
						|
    for DRIVE in $APMD_DRIVES; do
 | 
						|
      "${HDPARM}" -q -S "${APMD_SPINDOWN}" "${DRIVE}" || true
 | 
						|
    done
 | 
						|
}
 | 
						|
 | 
						|
power_performance ()
 | 
						|
{
 | 
						|
    # Disable IDE hard disk spindown.
 | 
						|
    for DRIVE in $APMD_DRIVES; do
 | 
						|
      "${HDPARM}" -q -S 0 "${DRIVE}" || true
 | 
						|
    done
 | 
						|
}
 | 
						|
 | 
						|
choose_power ()
 | 
						|
{
 | 
						|
    if on_ac_power > /dev/null
 | 
						|
    then
 | 
						|
	power_performance
 | 
						|
    else
 | 
						|
	power_conserve
 | 
						|
    fi
 | 
						|
}
 | 
						|
 | 
						|
if [ "${1}" = "start" ]; then
 | 
						|
    choose_power
 | 
						|
elif [ "${1}" = "resume" ] && [ "${2}" != "standby" ]; then
 | 
						|
    choose_power
 | 
						|
elif [ "${1},${2}" = "change,power" ]; then
 | 
						|
    choose_power
 | 
						|
elif [ "${1}" = "stop" ]; then
 | 
						|
    power_performance
 | 
						|
fi
 | 
						|
 | 
						|
exit 0
 |