Messages in this thread Patch in this message | | | Date | Sat, 13 Jul 2002 01:28:14 -0700 | From | William Lee Irwin III <> | Subject | Re: NUMA-Q breakage 5/7 in_interrupt() race |
| |
> ===== include/asm-i386/hardirq.h 1.7 vs edited ===== > + preempt_disable(); > + > + return retval; > +}
Not sure how it survived running. That should be a preempt_enable() on the way out. Maybe I should have used the get_cpu()/put_cpu() stuff.
Amended patch follows.
Cheers, Bill
===== include/asm-i386/hardirq.h 1.7 vs edited ===== --- 1.7/include/asm-i386/hardirq.h Mon May 20 10:51:17 2002 +++ edited/include/asm-i386/hardirq.h Thu Jul 11 19:51:02 2002 @@ -22,8 +22,24 @@ * Are we in an interrupt context? Either doing bottom half * or hardware interrupt processing? */ -#define in_interrupt() ({ int __cpu = smp_processor_id(); \ - (local_irq_count(__cpu) + local_bh_count(__cpu) != 0); }) +static inline int in_interrupt(void) +{ + int total_count, retval, cpu; + + preempt_disable(); + cpu = smp_processor_id(); + + total_count = local_irq_count(cpu) + local_bh_count(cpu); + + if (total_count) + retval = 1; + else + retval = 0; + + preempt_enable(); + + return retval; +} #define in_irq() (local_irq_count(smp_processor_id()) != 0) - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |