* do_bottom_half() runs at normal kernel priority: all interrupts
* enabled. do_bottom_half() is atomic with respect to itself: a
* bottom_half handler need not be re-entrant.
to me, this seems to imply that do_bottom_half() should only
be called when interrupts are enabled (and indeed that seems
to be the case). however, do_bottom_half looks like this:
asmlinkage void do_bottom_half(void)
{
int cpu = smp_processor_id();
if (softirq_trylock(cpu)) {
if (hardirq_trylock(cpu)) {
__sti();
run_bottom_halves();
__cli();
hardirq_endlock(cpu);
}
softirq_endlock(cpu);
}
}
just prior to run_bottom_halves(), interrupts get explicitly
enabled (__sti()). why is that?
also, on exit, interrupts are explicity disabled (__cli()).
this step appears to be incorrect.
any comments?
jan-simon.
-
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/