Hi!

> ... and it fails to freeze processes if there's a stopped task (to verify,
> run vi, press ^Z, and try to suspend).

Ok, here's better version. (Notice it only differs by one bit ;-).

Ok, something is still weird. Bash reports spurious...

[2]+  Stopped                 vi

...after resume. But I think it is right approach. We want to store
all the tasks in refrigerator.
                                                                Pavel


diff --git a/kernel/power/process.c b/kernel/power/process.c
index 7bcc976..9849d88 100644
--- a/kernel/power/process.c
+++ b/kernel/power/process.c
@@ -26,8 +26,7 @@ static inline int freezeable(struct task
            (p->flags & PF_NOFREEZE) ||
            (p->exit_state == EXIT_ZOMBIE) ||
            (p->exit_state == EXIT_DEAD) ||
-           ((p->exit_state == TASK_TRACED) && frozen(p->parent)) ||
-           (p->state == TASK_STOPPED))
+           ((p->exit_state == TASK_TRACED) && frozen(p->parent)))
                return 0;
        return 1;
 }
@@ -62,7 +61,7 @@ static inline void freeze_process(struct
        if (!freezing(p)) {
                freeze(p);
                spin_lock_irqsave(&p->sighand->siglock, flags);
-               signal_wake_up(p, 0);
+               signal_wake_up(p, 1);
                spin_unlock_irqrestore(&p->sighand->siglock, flags);
        }
 }
diff --git a/kernel/signal.c b/kernel/signal.c
index 9a61944..e305ad1 100644
--- a/kernel/signal.c
+++ b/kernel/signal.c
@@ -1702,7 +1702,9 @@ finish_stop(int stop_count)
                read_unlock(&tasklist_lock);
        }
 
-       schedule();
+       do {
+               schedule();
+       } while (try_to_freeze());
        /*
         * Now we don't run again until continued.
         */

                                                                        Pavel

-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) 
http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Suspend-devel mailing list
Suspend-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/suspend-devel

Reply via email to