diff options
Diffstat (limited to 'packages/apmd/apmd-3.2.2')
-rw-r--r-- | packages/apmd/apmd-3.2.2/.mtn2git_empty | 0 | ||||
-rw-r--r-- | packages/apmd/apmd-3.2.2/apmd_proxy | 91 | ||||
-rw-r--r-- | packages/apmd/apmd-3.2.2/apmd_proxy.conf | 16 | ||||
-rw-r--r-- | packages/apmd/apmd-3.2.2/debian.patch | 54 | ||||
-rw-r--r-- | packages/apmd/apmd-3.2.2/default | 8 | ||||
-rw-r--r-- | packages/apmd/apmd-3.2.2/devfs.patch | 11 | ||||
-rw-r--r-- | packages/apmd/apmd-3.2.2/hwclock | 16 | ||||
-rwxr-xr-x[-rw-r--r--] | packages/apmd/apmd-3.2.2/init | 44 | ||||
-rw-r--r-- | packages/apmd/apmd-3.2.2/logcheck.ignore.paranoid | 13 | ||||
-rw-r--r-- | packages/apmd/apmd-3.2.2/workaround.patch | 55 |
10 files changed, 308 insertions, 0 deletions
diff --git a/packages/apmd/apmd-3.2.2/.mtn2git_empty b/packages/apmd/apmd-3.2.2/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/packages/apmd/apmd-3.2.2/.mtn2git_empty diff --git a/packages/apmd/apmd-3.2.2/apmd_proxy b/packages/apmd/apmd-3.2.2/apmd_proxy index e69de29bb2..c48ee4e5d5 100644 --- a/packages/apmd/apmd-3.2.2/apmd_proxy +++ b/packages/apmd/apmd-3.2.2/apmd_proxy @@ -0,0 +1,91 @@ +#!/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 diff --git a/packages/apmd/apmd-3.2.2/apmd_proxy.conf b/packages/apmd/apmd-3.2.2/apmd_proxy.conf index e69de29bb2..751145c522 100644 --- a/packages/apmd/apmd-3.2.2/apmd_proxy.conf +++ b/packages/apmd/apmd-3.2.2/apmd_proxy.conf @@ -0,0 +1,16 @@ +# /etc/apm/apmd_proxy.conf: configuration file for apmd. +# +# This file is managed by debconf when installing or reconfiguring the +# package. It is generated by merging the answers gathered by debconf +# into the template file "/usr/share/apmd/apmd_proxy.conf". + +# 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 +# +# Set the following to "false" if you want to reject system suspend or +# system standby requests when the computer is running on AC power. +# Otherwise set this to "true". Such requests are never rejected when +# the computer is running on battery power. +#SUSPEND_ON_AC=true diff --git a/packages/apmd/apmd-3.2.2/debian.patch b/packages/apmd/apmd-3.2.2/debian.patch index e69de29bb2..d49e524bbd 100644 --- a/packages/apmd/apmd-3.2.2/debian.patch +++ b/packages/apmd/apmd-3.2.2/debian.patch @@ -0,0 +1,54 @@ +--- apmd-3.2.2.orig/apmd.c ++++ apmd-3.2.2/apmd.c +@@ -343,7 +343,7 @@ + /* parent */ + int status, retval; + ssize_t len; +- time_t time_limit; ++ time_t countdown; + + if (pid < 0) { + /* Couldn't fork */ +@@ -356,8 +356,9 @@ + /* Capture the child's output, if any, but only until it terminates */ + close(fds[1]); + fcntl(fds[0], F_SETFL, O_RDONLY|O_NONBLOCK); +- time_limit = time(0) + proxy_timeout; ++ countdown = proxy_timeout; + do { ++ countdown -= 1; + while ((len = read(fds[0], line, sizeof(line)-1)) > 0) { + line[len] = 0; + APMD_SYSLOG(LOG_INFO, "+ %s", line); +@@ -372,16 +373,16 @@ + goto proxy_done; + } + +- sleep(1); ++ while (sleep(1) > 0) ; + } while ( +- (time(0) < time_limit) ++ (countdown >= 0) + || (proxy_timeout < 0) + ); + + APMD_SYSLOG(LOG_NOTICE, "Proxy has been running more than %d seconds; killing it", proxy_timeout); + + kill(pid, SIGTERM); +- time_limit = time(0) + 5; ++ countdown = 5; + do { + retval = waitpid(pid, &status, WNOHANG); + if (retval == pid) +@@ -392,9 +393,9 @@ + goto proxy_done; + } + +- sleep(1); ++ while (sleep(1) > 0) ; + +- } while (time(0) < time_limit); ++ } while (countdown >= 0); + + kill(pid, SIGKILL); + status = __W_EXITCODE(0, SIGKILL); diff --git a/packages/apmd/apmd-3.2.2/default b/packages/apmd/apmd-3.2.2/default index e69de29bb2..4b7965abf8 100644 --- a/packages/apmd/apmd-3.2.2/default +++ b/packages/apmd/apmd-3.2.2/default @@ -0,0 +1,8 @@ +# +# Default for /etc/init.d/apmd +# + +# As apmd can be called with arguments, we use the following variable +# to store them, e.g., APMD="-w 5 -p 2". +# See the manual page apmd(8) for details. +APMD="--proxy-timeout 30" diff --git a/packages/apmd/apmd-3.2.2/devfs.patch b/packages/apmd/apmd-3.2.2/devfs.patch index e69de29bb2..b11e01929b 100644 --- a/packages/apmd/apmd-3.2.2/devfs.patch +++ b/packages/apmd/apmd-3.2.2/devfs.patch @@ -0,0 +1,11 @@ +--- apmd-3.2.0.orig/apm.h~devfs ++++ apmd-3.2.0.orig/apm.h +@@ -24,7 +24,7 @@ + #include <sys/types.h> + + #define APM_PROC "/proc/apm" +-#define APM_DEVICE "/dev/apm_bios" ++#define APM_DEVICE "/dev/misc/apm_bios" + + #define APM_DEV "/proc/devices" + #define APM_NAME "apm_bios" diff --git a/packages/apmd/apmd-3.2.2/hwclock b/packages/apmd/apmd-3.2.2/hwclock index e69de29bb2..a1c1c2294c 100644 --- a/packages/apmd/apmd-3.2.2/hwclock +++ b/packages/apmd/apmd-3.2.2/hwclock @@ -0,0 +1,16 @@ +#!/bin/sh +# Preserve the system clock around suspend/resume. + +INIT="/etc/init.d/hwclock.sh" +[ -x "${INIT}" ] || exit 0 + +case "${1},${2}" in +(suspend,*) + "${INIT}" stop + ;; +(resume,suspend) + "${INIT}" start + ;; +esac + +exit 0 diff --git a/packages/apmd/apmd-3.2.2/init b/packages/apmd/apmd-3.2.2/init index e69de29bb2..f1098a752d 100644..100755 --- a/packages/apmd/apmd-3.2.2/init +++ b/packages/apmd/apmd-3.2.2/init @@ -0,0 +1,44 @@ +#!/bin/sh +# +# Start or stop the Advanced Power Management daemon. +# +# Written by Dirk Eddelbuettel <edd@debian.org> +# Greatly modified by Avery Pennarun <apenwarr@debian.org> +# +# I think this script is now free of bashisms. +# Please correct me if I'm wrong! + +PATH=/bin:/usr/bin:/sbin:/usr/sbin + +[ -f /etc/default/rcS ] && . /etc/default/rcS +[ -f /etc/default/apmd ] && . /etc/default/apmd + +case "$1" in + start) + echo -n "Starting advanced power management daemon: " + start-stop-daemon -S -x /usr/sbin/apmd -- \ + -P /etc/apm/apmd_proxy $APMD + if [ $? = 0 ]; then + echo "apmd." + else + echo "(failed.)" + fi + ;; + stop) + echo -n "Stopping advanced power management daemon: " + start-stop-daemon -K \ + -x /usr/sbin/apmd + echo "apmd." + ;; + restart|force-reload) + $0 stop + $0 start + exit + ;; + *) + echo "Usage: /etc/init.d/apmd {start|stop|restart|force-reload}" + exit 1 + ;; +esac + +exit 0 diff --git a/packages/apmd/apmd-3.2.2/logcheck.ignore.paranoid b/packages/apmd/apmd-3.2.2/logcheck.ignore.paranoid index e69de29bb2..de37f01a2d 100644 --- a/packages/apmd/apmd-3.2.2/logcheck.ignore.paranoid +++ b/packages/apmd/apmd-3.2.2/logcheck.ignore.paranoid @@ -0,0 +1,13 @@ +apmd\[[0-9]+\]: (Normal|Standby|Critical) Resume +apmd\[[0-9]+\]: (Now using|Using) (AC|battery|backup) power +apmd\[[0-9]+\]: (System|User) (Standby|Suspend) +apmd\[[0-9]+\]: (apmd_)?call_proxy: +apmd\[[0-9]+\]: Battery: [0-9]+%, +apmd\[[0-9]+\]: Battery: absent +apmd\[[0-9]+\]: Capability Change +apmd\[[0-9]+\]: Exiting +apmd\[[0-9]+\]: Performing APM status check +apmd\[[0-9]+\]: Suspending now +apmd\[[0-9]+\]: Update Time +apmd\[[0-9]+\]: Version: apmd [0-9.]+, (apm )?driver [0-9.]+, APM BIOS [0-9.]+ +apmd\[[0-9]+\]: apmd [0-9.]+ interfacing with apm driver [0-9.]+ and APM BIOS [0-9.]+ diff --git a/packages/apmd/apmd-3.2.2/workaround.patch b/packages/apmd/apmd-3.2.2/workaround.patch index e69de29bb2..19cf073115 100644 --- a/packages/apmd/apmd-3.2.2/workaround.patch +++ b/packages/apmd/apmd-3.2.2/workaround.patch @@ -0,0 +1,55 @@ + +# +# Patch managed by http://www.holgerschurig.de/patcher.html +# + +--- apmd-3.2.2.orig/apmd.c~workaround.patch ++++ apmd-3.2.2.orig/apmd.c +@@ -158,6 +158,7 @@ + static int quiet_bios_batlow; /* = 0 */ + static int verbosity = DEFAULT_VERBOSITY; + static int warn_level = 10; ++static int sleep_now = 0; /* ntp */ + + static uid_t apmd_uid = 0; + static int apmd_fd = -1; +@@ -942,6 +943,12 @@ + exit(0); + } + ++/* ntp */ ++static void sig_usr1(int sig) ++{ ++ sleep_now = 1; ++} ++ + int main(int argc, char **argv) + { + int c; +@@ -1151,6 +1158,8 @@ + openlog("apmd", (verbosity>=LOG_DEBUG)?LOG_PERROR:0 | LOG_PID | LOG_CONS, LOG_DAEMON); + + /* Set up signal handler */ ++ if (signal(SIGUSR1, SIG_IGN) != SIG_IGN) ++ signal(SIGUSR1, sig_usr1); /* ntp */ + if (signal(SIGINT, SIG_IGN) != SIG_IGN) + signal(SIGINT, sig_handler); + if (signal(SIGQUIT, SIG_IGN) != SIG_IGN) +@@ -1230,9 +1239,16 @@ + + for (;;) + { +- int num_events = apm_get_events(apmd_fd, check_interval, events, MAX_EVENTS); ++ int num_events; + int e, a; + ++ /* ntp */ ++ if (sleep_now) { ++ sleep_now = 0; ++ handle_event(APM_USER_SUSPEND, &apminfo); ++ } ++ ++ num_events = apm_get_events(apmd_fd, check_interval, events, MAX_EVENTS); + apm_read(&apminfo); + + if (num_events == 0) { |