1 #ifndef _LINUX_BH_H 2 #define _LINUX_BH_H 3 4 #include <linux/preempt.h> 5 #include <linux/preempt_mask.h> 6 7 #ifdef CONFIG_TRACE_IRQFLAGS 8 extern void __local_bh_disable_ip(unsigned long ip, unsigned int cnt); 9 #else __local_bh_disable_ip(unsigned long ip,unsigned int cnt)10static __always_inline void __local_bh_disable_ip(unsigned long ip, unsigned int cnt) 11 { 12 preempt_count_add(cnt); 13 barrier(); 14 } 15 #endif 16 local_bh_disable(void)17static inline void local_bh_disable(void) 18 { 19 __local_bh_disable_ip(_THIS_IP_, SOFTIRQ_DISABLE_OFFSET); 20 } 21 22 extern void _local_bh_enable(void); 23 extern void __local_bh_enable_ip(unsigned long ip, unsigned int cnt); 24 local_bh_enable_ip(unsigned long ip)25static inline void local_bh_enable_ip(unsigned long ip) 26 { 27 __local_bh_enable_ip(ip, SOFTIRQ_DISABLE_OFFSET); 28 } 29 local_bh_enable(void)30static inline void local_bh_enable(void) 31 { 32 __local_bh_enable_ip(_THIS_IP_, SOFTIRQ_DISABLE_OFFSET); 33 } 34 35 #endif /* _LINUX_BH_H */ 36