mirror of
https://git.yoctoproject.org/poky
synced 2026-03-05 06:49:39 +01:00
3.7 KiB
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