On Mon, Oct 08, 2007 at 11:04:12PM -0400, Steven Rostedt wrote: > On Mon, Oct 08, 2007 at 11:45:23AM -0700, Mike Kravetz wrote: > > Are these accurate statements? I'll start working on a reliable delivery > > mechanism for RealTime scheduling. But, I just want to make sure that > > is really necessary. > > For i386 I don't think so. Seems that the interrupt handler will set the > current task to "need_resched" and on exit of the interrupt handler, the > schedule should take place. I don't see the race (that doesn't mean > there is one).
The more I try understand the IPI handling the more confused I get. :( At fist I was concerned about an IPI happening in the middle of the __schedule routine. But, then it occurred to me that interrupts are disabled when in this routine (when holding the runqueue lock). So, IPIs are not delivered during __schedule processing. Right? But, if this is case then I don't understand the following code in schedule(): local_irq_disable(); do { __schedule(); } while (unlikely(test_thread_flag(TIF_NEED_RESCHED) || test_thread_flag(TIF_NEED_RESCHED_DELAYED))); local_irq_enable(); How can the reschedule flags possibly be set AFTER running __schedule. Especially when the call is explicitly surrounded by local_irq_disable/ local_irq_enable. Can someone help me? -- Mike - 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/