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