mirror of
https://git.yoctoproject.org/poky
synced 2026-05-30 00:20:08 +00:00
Rename /openembedded/ -> /meta/
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@530 311d38ba-8fff-0310-9ca6-ca027cbcb966
This commit is contained in:
+91
@@ -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
|
||||
+16
@@ -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
|
||||
+54
@@ -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);
|
||||
+8
@@ -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"
|
||||
+44
@@ -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
|
||||
+55
@@ -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) {
|
||||
+50
@@ -0,0 +1,50 @@
|
||||
Index: apmd-3.2.2.orig/apm.c
|
||||
===================================================================
|
||||
--- apmd-3.2.2.orig.orig/apm.c 2006-01-26 15:15:27.000000000 +0100
|
||||
+++ apmd-3.2.2.orig/apm.c 2006-01-26 17:50:14.000000000 +0100
|
||||
@@ -24,10 +24,12 @@
|
||||
#include <unistd.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
+#include <sys/utsname.h>
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
#include <time.h>
|
||||
#include <getopt.h>
|
||||
+#include <signal.h>
|
||||
#include "apm.h"
|
||||
|
||||
static int verbose = 0;
|
||||
@@ -43,6 +45,9 @@
|
||||
int fd;
|
||||
time_t then, now;
|
||||
int error;
|
||||
+ FILE* pid_file;
|
||||
+ int apmd_pid;
|
||||
+ struct utsname uname_ver;
|
||||
|
||||
fd = open(APM_DEVICE, O_WRONLY);
|
||||
if (fd < 0)
|
||||
@@ -54,6 +59,22 @@
|
||||
switch (mode)
|
||||
{
|
||||
case SUSPEND:
|
||||
+ if(0 == system("grep -i hardware /proc/cpuinfo|grep -i SHARP"))
|
||||
+ {
|
||||
+ uname(&uname_ver);
|
||||
+
|
||||
+ if(0 == strncmp("2.4", uname_ver.release, 3))
|
||||
+ {
|
||||
+ pid_file = fopen("/var/run/apmd.pid", "r");
|
||||
+ if(pid_file)
|
||||
+ {
|
||||
+ fscanf(pid_file, "%d", &apmd_pid);
|
||||
+ fclose(pid_file);
|
||||
+ }
|
||||
+
|
||||
+ kill(apmd_pid, SIGKILL);
|
||||
+ }
|
||||
+ }
|
||||
error = apm_suspend(fd);
|
||||
break;
|
||||
case STANDBY:
|
||||
@@ -0,0 +1,64 @@
|
||||
DESCRIPTION = "Set of tools for managing notebook power consumption."
|
||||
SECTION = "base"
|
||||
PRIORITY = "required"
|
||||
DEPENDS = "libtool-cross"
|
||||
LICENSE = "GPL"
|
||||
PR = "r7"
|
||||
|
||||
SRC_URI = "${DEBIAN_MIRROR}/main/a/apmd/apmd_${PV}.orig.tar.gz; \
|
||||
file://debian.patch;patch=1 \
|
||||
file://workaround.patch;patch=1 \
|
||||
file://zaurus24.patch;patch=1 \
|
||||
file://init \
|
||||
file://default \
|
||||
file://apmd_proxy \
|
||||
file://apmd_proxy.conf"
|
||||
|
||||
S = "${WORKDIR}/apmd-${PV}.orig"
|
||||
|
||||
inherit update-rc.d
|
||||
|
||||
INITSCRIPT_NAME = "apmd"
|
||||
INITSCRIPT_PARAMS = "defaults"
|
||||
|
||||
do_compile() {
|
||||
oe_runmake "LIBTOOL=${STAGING_BINDIR}/${TARGET_PREFIX}libtool" apm apmd
|
||||
}
|
||||
|
||||
do_stage() {
|
||||
install -m 0644 apm.h ${STAGING_INCDIR}
|
||||
oe_libinstall -so libapm ${STAGING_LIBDIR}
|
||||
}
|
||||
|
||||
do_install() {
|
||||
install -d ${D}${sysconfdir}
|
||||
install -d ${D}${sysconfdir}/apm
|
||||
install -d ${D}${sysconfdir}/apm/event.d
|
||||
install -d ${D}${sysconfdir}/apm/other.d
|
||||
install -d ${D}${sysconfdir}/apm/suspend.d
|
||||
install -d ${D}${sysconfdir}/apm/resume.d
|
||||
install -d ${D}${sysconfdir}/apm/scripts.d
|
||||
install -d ${D}${sysconfdir}/default
|
||||
install -d ${D}${sysconfdir}/init.d
|
||||
install -d ${D}${sbindir}
|
||||
install -d ${D}${bindir}
|
||||
install -d ${D}${libdir}
|
||||
install -d ${D}${datadir}/apmd
|
||||
|
||||
install -m 4755 ${S}/.libs/apm ${D}${bindir}/apm
|
||||
install -m 0755 ${S}/.libs/apmd ${D}${sbindir}/apmd
|
||||
install -m 0755 ${WORKDIR}/apmd_proxy ${D}${sysconfdir}/apm/
|
||||
install -m 0644 ${WORKDIR}/apmd_proxy.conf ${D}${datadir}/apmd/
|
||||
install -m 0644 ${WORKDIR}/default ${D}${sysconfdir}/default/apmd
|
||||
oe_libinstall -so libapm ${D}${libdir}
|
||||
install -m 0644 apm.h ${D}${includedir}
|
||||
|
||||
cat ${WORKDIR}/init | sed -e 's,/usr/sbin,${sbindir},g; s,/etc,${sysconfdir},g;' > ${D}${sysconfdir}/init.d/apmd
|
||||
chmod 755 ${D}${sysconfdir}/init.d/apmd
|
||||
}
|
||||
|
||||
PACKAGES =+ "libapm libapm-dev apm"
|
||||
|
||||
FILES_libapm = "${libdir}/libapm.so.*"
|
||||
FILES_libapm-dev = "${libdir}/libapm.* ${includedir}"
|
||||
FILES_apm = "${bindir}/apm*"
|
||||
Reference in New Issue
Block a user