Messages in this thread | | | Date | Tue, 4 Apr 2006 15:27:25 -0400 (EDT) | From | Steven Rostedt <> | Subject | Re: 2.6.16-rt10 |
| |
On Tue, 4 Apr 2006, Simon Derr wrote:
> > But I must be severely misunderstanding something. > > What I understood is that in preemptible sections preempt_count() is > zero, and in non preemptible sections it is >0. > > If preempt_count() is 1, then preempt_enable_no_resched() will decrement > it and issue a warning. This is what happens in disabled_fph_fault(). > > Where am I wrong ?
You're not.
There's nothing unstable about it. The problem is that you didn't schedule when you could have. With Linux, this really isn't an issue, but with the -rt kernel we concentrate on low latency, and by not calling schedule when preempt count goes to zero and the need_resched flag may be set, you may be delaying a high priority process unnecessarily, for longer than needed. This in the -rt kernel _is_ a bug.
So for a stability point of view, that missed schedule wont crash the kernel, but it might cause an xrun in JACK.
Now, sometimes a call to preempt_enable_no_resched is called just before schedule is called, this is done so you don't have a double schedule. For this, it is ok to call *_no_resched, but you need to flag that this is ok by calling __preempt_enable_no_resched directly.
-- Steve - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |