On 2011-07-12 19:31, Gilles Chanteperdrix wrote: > On 07/12/2011 02:57 PM, Jan Kiszka wrote: >> xnlock_put_irqrestore(&nklock, s); >> xnpod_schedule(); >> } >> @@ -1036,6 +1043,7 @@ redo: >> * to process this signal anyway. >> */ >> if (rthal_current_domain == rthal_root_domain) { >> + XENO_BUGON(NUCLEUS, xnthread_test_info(thread, XNATOMIC)); > > Misleading dead code again, XNATOMIC is cleared not ten lines above. Nope, I forgot to remove that line. > >> if (XENO_DEBUG(NUCLEUS) && (!signal_pending(this_task) >> || this_task->state != TASK_RUNNING)) >> xnpod_fatal >> @@ -1044,6 +1052,8 @@ redo: >> return -ERESTARTSYS; >> } >> >> + xnthread_clear_info(thread, XNATOMIC); > > Why this? I find the xnthread_clear_info(XNATOMIC) right at the right > place at the point it currently is. Nope. Now we either clear XNATOMIC after successful migration or when the signal is about to be sent (ie. in the hook). That way we can test more reliably (TM) in the gatekeeper if the thread can be migrated. Jan