blob: 8fdcb783197d723a60dc548114af08cd6de9ca88 [file] [log] [blame]
Andrew Morton676dcb82006-12-06 20:31:30 -08001#ifndef _LINUX_BH_H
2#define _LINUX_BH_H
3
Peter Zijlstra0bd3a172013-11-19 16:13:38 +01004#include <linux/preempt.h>
Peter Zijlstra0bd3a172013-11-19 16:13:38 +01005
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
Andrew Morton676dcb82006-12-06 20:31:30 -080021extern void _local_bh_enable(void);
Peter Zijlstra0bd3a172013-11-19 16:13:38 +010022extern 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}
Andrew Morton676dcb82006-12-06 20:31:30 -080033
34#endif /* _LINUX_BH_H */