[Pm-utils] [patch] userspace-suspend, revisited
Tim Dijkstra
newsuser at famdijkstra.org
Mon Mar 26 11:43:13 PDT 2007
On Mon, 26 Mar 2007 20:16:41 +0200
Stefan Seyfried <seife at suse.de> wrote:
> Hi,
>
> just to make sure that we don't forget about it... :-)
>
> This is my current minimal userspace suspend patch. It should in theory
> be easy to also patch suspend2 support into it, and it already provides
> a do_suspend_hybrid (untested, i have to admit). It also introduces error
> reporting up the stack, which we also want to have (see also the small
> echo replacement i posted some days ago to further improve this).
Did you look at the S2RAM_OPTS patch I send (Come to think about it,
I don't think I send it to this list ...)
What are all those 'set -x' / 'set +x' pairs for? To beautify the logs?
grts Tim
> Index: pm/functions
> ===================================================================
> RCS file: /cvs/pm-utils/pm-utils/pm/functions,v
> retrieving revision 1.44
> diff -u -r1.44 functions
> --- pm/functions 26 Mar 2007 14:18:07 -0000 1.44
> +++ pm/functions 26 Mar 2007 18:15:44 -0000
> @@ -12,6 +12,8 @@
> INHIBIT=/var/run/pm-utils.inhibit
> PM_LOGFILE=${PM_LOGFILE:=/var/log/pm-suspend.log}
> SUSPEND_MODULES=""
> +HIBERNATE_METHOD=""
> +S2DISK_CONF="/etc/suspend.conf"
> TEMPORARY_CPUFREQ_GOVERNOR="userspace"
>
> set -a
> @@ -120,22 +122,72 @@
>
> do_suspend()
> {
> - pm-pmu --suspend || echo -n "mem" > /sys/power/state
> + local RET
> + if [ -x /usr/sbin/s2ram ]; then
> + set -x
> + /usr/sbin/s2ram $S2RAM_OPTS
> + RET=$?
> + set +x
> + else
> + pm-pmu --suspend || echo -n "mem" > /sys/power/state
> + RET=$?
> + fi
> + return $RET
> }
>
> do_hibernate()
> {
> - echo -n "platform" > /sys/power/disk
> - echo -n "disk" > /sys/power/state
> + local RET=1
> + if [ -z "$HIBERNATE_METHOD" ]; then
> + if [ -x /usr/sbin/s2disk -a -c /dev/snapshot ]; then
> + HIBERNATE_METHOD="userspace"
> + else
> + HIBERNATE_METHOD="kernel"
> + fi
> + fi
> + case $HIBERNATE_METHOD in
> + userspace)
> + set -x
> + /usr/sbin/s2disk -f $S2DISK_CONF
> + RET=$?
> + set +x
> + ;;
> + kernel)
> + echo -n "platform" > /sys/power/disk
> + echo -n "disk" > /sys/power/state
> + RET=$?
> + ;;
> + esac
> + return $RET
> }
>
> do_suspend_hybrid()
> {
> - return 1
> + local RET=1
> + if [ -z "$HIBERNATE_METHOD" ]; then
> + if [ -x /usr/sbin/s2both -a -c /dev/snapshot ]; then
> + HIBERNATE_METHOD="userspace"
> + else
> + HIBERNATE_METHOD="kernel"
> + fi
> + fi
> + case $HIBERNATE_METHOD in
> + userspace)
> + set -x
> + /usr/sbin/s2both -f $S2DISK_CONF
> + RET=$?
> + set +x
> + ;;
> + *)
> + RET=1
> + ;;
> + esac
> + return $RET
> }
>
> pm_main()
> {
> + local RET=1
> if [ -n "$PM_LOGFILE" ]; then
> [ -f "$PM_LOGFILE" ] && rm -f "$PM_LOGFILE"
> exec > "$PM_LOGFILE" 2>&1
> @@ -149,13 +201,14 @@
> if [ ! -e "$INHIBIT" -a "$(type -t "do_$1")" == "function" ]; then
> sync ; sync ; sync
> "do_$1"
> + RET=$?
> fi
>
> run_hooks "$2" reverse
>
> remove_suspend_lock 200
>
> - return 0
> + return $RET
> }
>
> _rmmod() {
> --
> Stefan Seyfried
>
> "Any ideas, John?"
> "Well, surrounding them's out."
> _______________________________________________
> Pm-utils mailing list
> Pm-utils at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/pm-utils
More information about the Pm-utils
mailing list