Re: timer_bh behaviour incorrect for 2.2.13?

Andrea Arcangeli (andrea@suse.de)
Thu, 9 Dec 1999 20:00:41 +0100 (CET)


On Thu, 9 Dec 1999, William Montgomery wrote:

>
>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/