Messages in this thread | | | Date | Tue, 1 Nov 2011 18:59:53 +0100 | From | Oleg Nesterov <> | Subject | Re: [RFC PATCH] freezer: revert 27920651fe "PM / Freezer: Make fake_signal_wake_up() wake TASK_KILLABLE tasks too" |
| |
On 11/01, Tejun Heo wrote: > > diddling with > sigmask in kernel generally isn't a good idea.
Agreed.
> If there are only a handful sites which need this type of behavior, > wouldn't something like the following work? > > #define wait_event_freezekillable(wq, condition) \ > do { \ > DEFINE_WAIT(__wait); \ > for (;;) { \ > prepare_to_wait(&wq, &__wait, TASK_INTERRUPTIBLE); \ > if (condition || fatal_signal_pending(current)) \ > break; \ > schedule(); \
No, this can't work, afaics.
Once the caller recieves a non-fatal signal (gets TIF_SIGPENDING), schedule() won't block in TASK_INTERRUPTIBLE state.
IOW, wait_event_freezekillable() becomes a busy-wait loop.
Oleg.
| |