On Sat, 17 Dec 2005, Nicolas Pitre wrote:
> 
> Now if you don't disable interrupts then nothing prevents an interrupt 
> handler, or another thread if kernel preemption is allowed

Preemption, yes. Interrupts no.

>                                                        to come 
> along right between (2) and (4) to call up() or down() which will 
> make the sem count inconsistent as soon as the interrupted down() or 
> up() is resumed.

An interrupt can never change the value without changing it back, except 
for the old-fashioned use of "up()" as a completion (which I don't think 
we do any more - we used to do it for IO completion a looong time ago).

So I think the interrupt disable could be removed for UP, at least for
non-preemption.

(Of course, maybe it's not worth it. It might not be a big performance 
issue).

                Linus

Reply via email to