On Sunday 14 January 2001 01:06, george anzinger wrote: > Nigel Gamble wrote: > > On Sat, 13 Jan 2001, Roger Larsson wrote: > > > A rethinking of the rescheduling strategy... > > > > Actually, I think you have more-or-less described how successful > > preemptible kernels have already been developed, given that your > > "sleeping spin locks" are really just sleeping mutexes (or binary > > semaphores). > > > > 1. Short critical regions are protected by spin_lock_irq(). The maximum > > value of "short" is therefore bounded by the maximum time we are happy > > to disable (local) interrupts - ideally ~100us. > > > > 2. Longer regions are protected by sleeping mutexes. > > > > 3. Algorithms are rearchitected until all of the highly contended locks > > are of type 1, and only low contention locks are of type 2. > > > > This approach has the advantage that we don't need to use a no-preempt > > count, and test it on exit from every spinlock to see if a preempting > > interrupt that has caused a need_resched has occurred, since we won't > > see the interrupt until it's safe to do the preemptive resched. > > I agree that this was true in days of yore. But these days the irq > instructions introduce serialization points and, me thinks, may be much > more time consuming than the "++, --, if (false)" that a preemption > count implemtation introduces. Could some one with a knowledge of the > hardware comment on this? > > I am not suggesting that the "++, --, if (false)" is faster than an > interrupt, but that it is faster than cli, sti. Of course we are > assuming that there is between the cli and the sti as there is > between the ++ and the -- if (false). > The problem with counting scheme is that you can not schedule inside any spinlock - you have to split them up. Maybe you will have to do that anyway. But if your RT process never needs more memory - it should be quite safe. The difference with a sleeping mutex is that it can be made lazier - keep it in the runlist, there should be very few... See first patch attempt. (George, Nigel told me about your idea before I sent the previous mail. So major influence comes from you. But I do not think that it is equivalent) /RogerL Note: changed email...