>
>On Thu, 9 Dec 1999, Andrea Arcangeli wrote:
>> >> > >
>> >> > > while ((active = get_active_bhs()) {
>> >
>> >how about .... __sti(); ?
>> >
>> >> > > clear_active_bhs(active);
>>
>> Yes that' the right place for the __sti(). After reading the active bhs
>> and before clearing them. Also remove the __sti and __cli() from the
>> caller.
>>
>Maybe the __sti(); should come *after* the clear_active_bhs?
No.
>A bh could get marked just prior to the clear_active_bhs and be lost?
We atomically only clear the ones that we are going to execute really. See
the clear_active_bhs implementation. The only thing that matters for UP is
that we take irq disabled all the time after we seen `active == 0'. Thus
we can enable interrupts locally _before_ clear_active_bhs but _after_
get_active_bhs().
>Does it hurt to keep __sti and __cli() in the caller?
No of course, they should be removed (see my previous email ;).
Andrea
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/