Files
poky/openembedded/packages/apmd/apmd-3.2.2/apmd_proxy
Richard Purdie 4b46c1f6e8 Initial population
git-svn-id: https://svn.o-hand.com/repos/poky@1 311d38ba-8fff-0310-9ca6-ca027cbcb966
2005-08-31 10:45:47 +00:00

3.7 KiB

#!/bin/sh

apmd_proxy - program dispatcher for APM daemon

Written by Craig Markwardt (craigm@lheamail.gsfc.nasa.gov) 21 May 1999

Modified for Debian by Avery Pennarun

This shell script is called by the APM daemon (apmd) when a power

management event occurs. Its first and second arguments describe the

event. For example, apmd will call "apmd_proxy suspend system" just

before the system is suspended.

Here are the possible arguments:

start - APM daemon has started

stop - APM daemon is shutting down

suspend critical - APM system indicates critical suspend (++)

suspend system - APM system has requested suspend mode

suspend user - User has requested suspend mode

standby system - APM system has requested standby mode

standby user - User has requested standby mode

resume suspend - System has resumed from suspend mode

resume standby - System has resumed from standby mode

resume critical - System has resumed from critical suspend

change battery - APM system reported low battery

change power - APM system reported AC/battery change

change time - APM system reported time change (*)

change capability - APM system reported config. change (+)

(*) - APM daemon may be configured to not call these sequences

(+) - Available if APM kernel supports it.

(++) - "suspend critical" is never passed to apmd from the kernel,

so we will never see it here. Scripts that process "resume

critical" events need to take this into account.

It is the proxy script's responsibility to examine the APM status

(via /proc/apm) or other status and to take appropriate actions.

For example, the script might unmount network drives before the

machine is suspended.

In Debian, the usual way of adding functionality to the proxy is to

add a script to /etc/apm/event.d. This script will be called by

apmd_proxy (via run-parts) with the same arguments.

If it is important that a certain set of script be run in a certain

order on suspend and in a different order on resume, then put all

the scripts in /etc/apm/scripts.d instead of /etc/apm/event.d and

symlink to these from /etc/apm/suspend.d, /etc/apm/resume.d and

/etc/apm/other.d using names whose lexicographical order is the same

as the desired order of execution.

If the kernel's APM driver supports it, apmd_proxy can return a non-zero

exit status on suspend and standby events, indicating that the suspend

or standby event should be rejected.

*******************************************************************

set -e

The following doesn't yet work, because current kernels (up to at least

2.4.20) do not support rejection of APM events. Supporting this would

require substantial modifications to the APM driver. We will re-enable

this feature if the driver is ever modified. -- cph@debian.org

#SUSPEND_ON_AC=false #[ -r /etc/apm/apmd_proxy.conf ] && . /etc/apm/apmd_proxy.conf

#if [ "${SUSPEND_ON_AC}" = "false" -a "${2}" = "system" ] \

&& on_ac_power >/dev/null; then

# Reject system suspends and standbys if we are on AC power

exit 1 # Reject (NOTE kernel support must be enabled)

#fi

if [ "${1}" = "suspend" -o "${1}" = "standby" ]; then run-parts -a "${1}" -a "${2}" /etc/apm/event.d if [ -d /etc/apm/suspend.d ]; then run-parts -a "${1}" -a "${2}" /etc/apm/suspend.d fi elif [ "${1}" = "resume" ]; then if [ -d /etc/apm/resume.d ]; then run-parts -a "${1}" -a "${2}" /etc/apm/resume.d fi run-parts -a "${1}" -a "${2}" /etc/apm/event.d else run-parts -a "${1}" -a "${2}" /etc/apm/event.d if [ -d /etc/apm/other.d ]; then run-parts -a "${1}" -a "${2}" /etc/apm/other.d fi fi

exit 0