lkml.org 
[lkml]   [2002]   [Jul]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: 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/
    \
     
     \ /
      Last update: 2005-03-22 13:27    [W:0.033 / U:0.840 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site