[Suspend2][ 08/13] [Suspend2] Prepare and cleanup the storage manager.

From: Nigel Cunningham
Date: Tue Jun 27 2006 - 00:39:57 EST


Start the storage manager at the beginning of a suspend/resume, and clean
it up at the end of a resume or cancelled suspend.

Signed-off-by: Nigel Cunningham <nigel@xxxxxxxxxxxx>

kernel/power/storage.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 47 insertions(+), 0 deletions(-)

diff --git a/kernel/power/storage.c b/kernel/power/storage.c
index e31623a..fea9276 100644
--- a/kernel/power/storage.c
+++ b/kernel/power/storage.c
@@ -176,3 +176,50 @@ static unsigned long usm_memory_needed(v
return (32 * PAGE_SIZE);
}

+/* suspend_prepare_usm
+ */
+int suspend_prepare_usm(void)
+{
+ usm_prepare_count++;
+
+ if (usm_prepare_count > 1 || usm_ops.disabled)
+ return 0;
+
+ usm_helper_data.pid = -1;
+
+ if (!*usm_helper_data.program)
+ return 0;
+
+ suspend_netlink_setup(&usm_helper_data);
+
+ if (usm_helper_data.pid == -1)
+ printk("Suspend2 Storage Manager wanted, but couldn't start it.\n");
+
+ suspend_activate_storage(0);
+
+ return (usm_helper_data.pid != -1);
+}
+
+void suspend_cleanup_usm(void)
+{
+ usm_prepare_count--;
+
+ if (usm_helper_data.pid > -1 && !usm_prepare_count) {
+ struct task_struct *t;
+
+ suspend_deactivate_storage(0);
+
+ suspend_send_netlink_message(&usm_helper_data,
+ NETLINK_MSG_CLEANUP, NULL, 0);
+
+ read_lock(&tasklist_lock);
+ if ((t = find_task_by_pid(usm_helper_data.pid)))
+ t->flags &= ~PF_NOFREEZE;
+ read_unlock(&tasklist_lock);
+
+ suspend_netlink_close(&usm_helper_data);
+
+ usm_helper_data.pid = -1;
+ }
+}
+

--
Nigel Cunningham nigel at suspend2 dot net
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/