diff -ruNp 
619-userspace-nofreeze.patch-old/kernel/power/suspend2_core/userspace-nofreeze.c
 
619-userspace-nofreeze.patch-new/kernel/power/suspend2_core/userspace-nofreeze.c
--- 
619-userspace-nofreeze.patch-old/kernel/power/suspend2_core/userspace-nofreeze.c
    1970-01-01 10:00:00.000000000 +1000
+++ 
619-userspace-nofreeze.patch-new/kernel/power/suspend2_core/userspace-nofreeze.c
    2005-07-04 23:14:19.000000000 +1000
@@ -0,0 +1,69 @@
+/*
+ * kernel/power/suspend2_core/userspace-nofreeze.c
+ *
+ * Mark/unmark userspace processes as PF_NOFREEZE.
+ *
+ * This should be used with extreme caution!
+ *
+ * Initial purpose: make nbd-client about to be NOFREEZE.
+ */
+
+#include <linux/module.h>
+#include <linux/suspend.h>
+#include <asm/tlbflush.h>
+#include "../suspend.h"
+
+int toggle_pid;
+
+/*
+ * toggle_thread_nofreeze
+ *
+ * Toggle a thread's PF_NOFREEZE flag
+ *
+ * Returns:
+ * -1: PID not found
+ *  0: NO_FREEZE cleared.
+ *  1: NO_FREEZE set.
+ */
+static int __toggle_thread_nofreeze(int pid)
+{
+       struct task_struct *p, *g;
+       int result = -1;
+
+       read_lock(&tasklist_lock);
+
+       do_each_thread(g, p) {
+               if (p->pid == pid) {
+                       if (p->mm) {
+                               p->flags ^=PF_NOFREEZE;
+                               result = !!(p->flags & PF_NOFREEZE);
+                       } else
+                               printk("Cowardly refusing to toggle NOFREEZE on 
a real kernel thread!");
+               }
+       } while_each_thread(g, p);
+
+       read_unlock(&tasklist_lock);
+
+       return result;
+}
+
+void toggle_thread_nofreeze(void)
+{
+       int result;
+       printk("Seeking %d... ", toggle_pid);
+
+       switch ((result = __toggle_thread_nofreeze(toggle_pid)))
+       {
+               case -1:
+                       printk("Can't toggle NO_FREEZE for thread - not 
found.\n");
+                       break;
+               case 0:
+                       printk("NO_FREEZE flag cleared.\n");
+                       break;
+               case 1:
+                       printk("NO_FREEZE flag set.\n");
+                       break;
+               default:
+                       printk("what does %d mean?!", result);
+       }
+}

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to