1 #ifndef _ALPHA_SOFTIRQ_H 2 #define _ALPHA_SOFTIRQ_H 3 4 #include <linux/stddef.h> 5 #include <asm/atomic.h> 6 #include <asm/hardirq.h> 7 cpu_bh_disable(int cpu)8extern inline void cpu_bh_disable(int cpu) 9 { 10 local_bh_count(cpu)++; 11 barrier(); 12 } 13 __cpu_bh_enable(int cpu)14extern inline void __cpu_bh_enable(int cpu) 15 { 16 barrier(); 17 local_bh_count(cpu)--; 18 } 19 20 #define __local_bh_enable() __cpu_bh_enable(smp_processor_id()) 21 #define local_bh_disable() cpu_bh_disable(smp_processor_id()) 22 23 #define local_bh_enable() \ 24 do { \ 25 int cpu; \ 26 \ 27 barrier(); \ 28 cpu = smp_processor_id(); \ 29 if (!--local_bh_count(cpu) && softirq_pending(cpu)) \ 30 do_softirq(); \ 31 } while (0) 32 33 #define in_softirq() (local_bh_count(smp_processor_id()) != 0) 34 35 #endif /* _ALPHA_SOFTIRQ_H */ 36