diff --git a/fdi/policy/10osvendor/10-power-mgmt-policy.fdi b/fdi/policy/10osvendor/10-power-mgmt-policy.fdi index c0b4845..6499f9b 100644 --- a/fdi/policy/10osvendor/10-power-mgmt-policy.fdi +++ b/fdi/policy/10osvendor/10-power-mgmt-policy.fdi @@ -33,11 +33,21 @@ <append key="org.freedesktop.Hal.Device.SystemPowerManagement.method_argnames" type="strlist">num_seconds_to_sleep</append> <append key="org.freedesktop.Hal.Device.SystemPowerManagement.method_execpaths" type="strlist">hal-system-power-suspend</append> + <append key="org.freedesktop.Hal.Device.SystemPowerManagement.method_names" type="strlist">SuspendClearError</append> + <append key="org.freedesktop.Hal.Device.SystemPowerManagement.method_signatures" type="strlist"></append> + <append key="org.freedesktop.Hal.Device.SystemPowerManagement.method_argnames" type="strlist"></append> + <append key="org.freedesktop.Hal.Device.SystemPowerManagement.method_execpaths" type="strlist">hal-system-power-suspend-clear-error</append> + <append key="org.freedesktop.Hal.Device.SystemPowerManagement.method_names" type="strlist">Hibernate</append> <append key="org.freedesktop.Hal.Device.SystemPowerManagement.method_signatures" type="strlist"></append> <append key="org.freedesktop.Hal.Device.SystemPowerManagement.method_argnames" type="strlist"></append> <append key="org.freedesktop.Hal.Device.SystemPowerManagement.method_execpaths" type="strlist">hal-system-power-hibernate</append> + <append key="org.freedesktop.Hal.Device.SystemPowerManagement.method_names" type="strlist">HibernateClearError</append> + <append key="org.freedesktop.Hal.Device.SystemPowerManagement.method_signatures" type="strlist"></append> + <append key="org.freedesktop.Hal.Device.SystemPowerManagement.method_argnames" type="strlist"></append> + <append key="org.freedesktop.Hal.Device.SystemPowerManagement.method_execpaths" type="strlist">hal-system-power-hibernate-clear-error</append> + <append key="org.freedesktop.Hal.Device.SystemPowerManagement.method_names" type="strlist">Shutdown</append> <append key="org.freedesktop.Hal.Device.SystemPowerManagement.method_signatures" type="strlist"></append> <append key="org.freedesktop.Hal.Device.SystemPowerManagement.method_argnames" type="strlist"></append> diff --git a/tools/Makefile.am b/tools/Makefile.am index d820cc8..4fa431d 100644 --- a/tools/Makefile.am +++ b/tools/Makefile.am @@ -86,7 +86,9 @@ script_SCRIPTS = \ hal-luks-teardown \ hal-luks-remove \ hal-system-power-suspend \ + hal-system-power-suspend-clear-error \ hal-system-power-hibernate \ + hal-system-power-hibernate-clear-error \ hal-system-power-shutdown \ hal-system-power-reboot \ hal-system-lcd-get-brightness \ @@ -110,5 +112,9 @@ check: fi; \ done; +install-data-local: + $(mkdir_p) $(DESTDIR)$(localstatedir)/lib/hal + chmod 0755 $(DESTDIR)$(localstatedir)/lib/hal + clean-local : rm -f *~ diff --git a/tools/linux/hal-system-power-hibernate-linux b/tools/linux/hal-system-power-hibernate-linux index 91da280..eda996a 100755 --- a/tools/linux/hal-system-power-hibernate-linux +++ b/tools/linux/hal-system-power-hibernate-linux @@ -31,8 +31,17 @@ elif [ -f /etc/mandriva-release ] ; then #RedHat/Fedora only support pm-utils elif [ -f /etc/redhat-release ] || [ -f /etc/fedora-release ] ; then if [ -x /usr/sbin/pm-hibernate ] ; then - /usr/sbin/pm-hibernate + rm -f /var/lib/hal/system-power-hibernate-output + touch /var/lib/hal/system-power-hibernate-output + chmod 644 /var/lib/hal/system-power-hibernate-output + echo "==== Kernel version: ====" >> /var/lib/hal/system-power-hibernate-output + /bin/uname -a >> /var/lib/hal/system-power-hibernate-output + echo "==== Modules loaded before hibernating: ====" >> /var/lib/hal/system-power-hibernate-output + /sbin/lsmod >> /var/lib/hal/system-power-hibernate-output + echo "==== Output of /usr/sbin/pm-hibernate ====" >> /var/lib/hal/system-power-hibernate-output + /bin/bash -x /usr/sbin/pm-hibernate >> /var/lib/hal/system-power-hibernate-output 2>&1 RET=$? + echo "==== DONE ====" >> /var/lib/hal/system-power-hibernate-output else unsupported fi @@ -68,7 +77,7 @@ do for device in $devices do dbus-send --system --print-reply --dest=org.freedesktop.Hal \ - $device org.freedesktop.Hal.Device.Rescan + $device org.freedesktop.Hal.Device.Rescan > /dev/null 2>&1 done done diff --git a/tools/linux/hal-system-power-suspend-linux b/tools/linux/hal-system-power-suspend-linux index 59cde73..8be9755 100755 --- a/tools/linux/hal-system-power-suspend-linux +++ b/tools/linux/hal-system-power-suspend-linux @@ -62,8 +62,17 @@ elif [ -f "/etc/redhat-release" ] || [ - # TODO: fixup pm-suspend to define erroc code (see alarm above) and throw # the appropriate exception if [ -x "/usr/sbin/pm-suspend" ] ; then - /usr/sbin/pm-suspend + rm -f /var/lib/hal/system-power-suspend-output + touch /var/lib/hal/system-power-suspend-output + chmod 644 /var/lib/hal/system-power-suspend-output + echo "==== Kernel version: ====" >> /var/lib/hal/system-power-suspend-output + /bin/uname -a >> /var/lib/hal/system-power-suspend-output + echo "==== Modules loaded before suspending: ====" >> /var/lib/hal/system-power-suspend-output + /sbin/lsmod >> /var/lib/hal/system-power-suspend-output + echo "==== Output of /usr/sbin/pm-suspend ====" >> /var/lib/hal/system-power-suspend-output + /bin/bash -x /usr/sbin/pm-suspend >> /var/lib/hal/system-power-suspend-output 2>&1 RET=$? + echo "==== DONE ====" >> /var/lib/hal/system-power-suspend-output else # TODO: add support unsupported @@ -103,7 +112,7 @@ do for device in $devices do dbus-send --system --print-reply --dest=org.freedesktop.Hal \ - $device org.freedesktop.Hal.Device.Rescan + $device org.freedesktop.Hal.Device.Rescan > /dev/null 2>&1 done done --- /dev/null 2006-11-08 11:09:00.112654773 -0500 +++ b/tools/hal-system-power-suspend-clear-error 2006-11-06 16:44:56.000000000 -0500 @@ -0,0 +1,3 @@ +#!/bin/bash + +rm -f /var/lib/hal/system-power-suspend-output --- /dev/null 2006-11-08 11:09:00.112654773 -0500 +++ b/tools/hal-system-power-hibernate-clear-error 2006-11-06 16:45:09.000000000 -0500 @@ -0,0 +1,3 @@ +#!/bin/bash + +rm -f /var/lib/hal/system-power-hibernate-output diff --git a/hald/haldaemon.in b/hald/haldaemon.in index 004ec2c..0e0a519 100755 --- a/hald/haldaemon.in +++ b/hald/haldaemon.in @@ -40,6 +40,8 @@ stop() { if [ $RETVAL -eq 0 ]; then rm -f @LOCALSTATEDIR@/lock/subsys/$servicename rm -f @HALD_PID_FILE@ + rm -f /var/lib/hal/system-power-hibernate-output + rm -f /var/lib/hal/system-power-suspend-output fi }