#
# pidfile: /var/run/acpid.pid
+# Check for ACPI event-file support on kernel side
+[ -r /proc/acpi/event ] || exit 0
+
# Source function library.
. /etc/rc.d/init.d/functions
VARIOUS_MODULES=""
ASUS_LAPTOP=""
TOSHIBA_LAPTOP=""
+MODULES=""
# Configuration file.
. /etc/sysconfig/acpid
+# As the name says. If the kernel supports modules,
+# it'll try to load the ones listed in "MODULES".
+load_modules() {
+ [ -f /proc/modules ] || return 0
+
+ if [ "$MODULES" = "all" ]; then
+ MODULES=$(sed -rn 's#^kernel/(drivers/acpi|drivers/misc/.*_acpi)/([^/]+/)*(.*)\.ko\.gz:.*#\3#p' /lib/modules/$(uname -r)/modules.dep)
+ else
+ # assemble from old lists
+ MODULES="$MODULES $LAPTOP_MODULES"
+ MODULES="$MODULES $VARIOUS_MODULES"
+ if is_yes "$ASUS_LAPTOP"; then
+ MODULES="$MODULES asus_acpi"
+ fi
+ if is_yes "$TOSHIBA_LAPTOP"; then
+ MODULES="$MODULES toshiba_acpi"
+ fi
+ if is_yes "$IBM_LAPTOP"; then
+ MODULES="$MODULES ibm_acpi"
+ fi
+ # strip spaces
+ MODULES=$(echo ${MODULES})
+ fi
+
+ if [ -z "$MODULES" ]; then
+ return
+ fi
+
+ # see if the modules are already loaded
+ if [ "$(lsmod | grep -E '^('$(echo $MODULES | tr ' ' '|')')\b' | wc -l)" = "$(echo $MODULES | wc -w)" ]; then
+ return
+ fi
+
+ show "Loading ACPI modules..."; busy
+ modprobe --all $MODULES && ok || fail
+}
+
# Start daemons.
start() {
if [ -f /var/lock/subsys/acpid ]; then
msg_already_running "ACPI Event Daemon"
return
fi
-
- if [ ! -d /proc/acpi/button ]; then
- modprobe -s button
- fi
- # Load additional modules:
- if [ -n "$LAPTOP_MODULES" ]; then
- for i in $LAPTOP_MODULES; do
- modprobe -s $i
- done
- fi
- if [ -n "$VARIOUS_MODULES" ]; then
- for i in $VARIOUS_MODULES; do
- modprobe -s $i
- done
+ load_modules
+
+ if is_yes "$NETLINK"; then
+ PROGRAM_ARGS="$PROGRAM_ARGS -n"
fi
- # Determine if it's ASUS or TOSHIBA laptop
- if is_yes "$ASUS_LAPTOP"; then
- modprobe -s asus_acpi
- elif is_yes "$TOSHIBA_LAPTOP"; then
- modprobe -s toshiba_acpi
+ if [ "$CLIENTMAX" ]; then
+ PROGRAM_ARGS="$PROGRAM_ARGS -C $CLIENTMAX"
fi
# starting:
start
}
+reload() {
+ if [ -f /var/lock/subsys/acpid ]; then
+ msg_not_running "ACPI Event Daemon"
+ RETVAL=7
+ return
+ fi
+
+ msg_reloading "ACPI Event Daemon"
+ killproc acpid -HUP
+ RETVAL=$?
+}
+
RETVAL=0
# See how we were called.
case "$1" in
condrestart 0
;;
reload|force-reload)
- if [ -f /var/lock/subsys/acpid ]; then
- msg_reloading "ACPI Event Daemon"
- killproc acpid -HUP
- RETVAL=$?
- else
- msg_not_running "ACPI Event Daemon"
- exit 7
- fi
+ reload
+ ;;
+ load-modules)
+ load_modules
;;
status)
status acpid
;;
*)
- msg_usage "$0 {start|stop|restart|try-restart|reload|force-reload|status}"
+ msg_usage "$0 {start|stop|restart|try-restart|reload|force-reload|load-modules|status}"
exit 3
esac