home *** CD-ROM | disk | FTP | other *** search
- #!/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
-