Add the rt linux 4.1.3-rt3 as base
[kvmfornfv.git] / kernel / include / linux / bottom_half.h
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_PREEMPT_RT_FULL
8
9 extern void local_bh_disable(void);
10 extern void _local_bh_enable(void);
11 extern void local_bh_enable(void);
12 extern void local_bh_enable_ip(unsigned long ip);
13 extern void __local_bh_disable_ip(unsigned long ip, unsigned int cnt);
14 extern void __local_bh_enable_ip(unsigned long ip, unsigned int cnt);
15
16 #else
17
18 #ifdef CONFIG_TRACE_IRQFLAGS
19 extern void __local_bh_disable_ip(unsigned long ip, unsigned int cnt);
20 #else
21 static __always_inline void __local_bh_disable_ip(unsigned long ip, unsigned int cnt)
22 {
23         preempt_count_add(cnt);
24         barrier();
25 }
26 #endif
27
28 static inline void local_bh_disable(void)
29 {
30         __local_bh_disable_ip(_THIS_IP_, SOFTIRQ_DISABLE_OFFSET);
31 }
32
33 extern void _local_bh_enable(void);
34 extern void __local_bh_enable_ip(unsigned long ip, unsigned int cnt);
35
36 static inline void local_bh_enable_ip(unsigned long ip)
37 {
38         __local_bh_enable_ip(ip, SOFTIRQ_DISABLE_OFFSET);
39 }
40
41 static inline void local_bh_enable(void)
42 {
43         __local_bh_enable_ip(_THIS_IP_, SOFTIRQ_DISABLE_OFFSET);
44 }
45 #endif
46
47 #endif /* _LINUX_BH_H */