xref: /linux-6.15/include/linux/bottom_half.h (revision bb970707)
1 #ifndef _LINUX_BH_H
2 #define _LINUX_BH_H
3 
4 #include <linux/preempt.h>
5 
6 #ifdef CONFIG_TRACE_IRQFLAGS
7 extern void __local_bh_disable_ip(unsigned long ip, unsigned int cnt);
8 #else
9 static __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 
16 static inline void local_bh_disable(void)
17 {
18 	__local_bh_disable_ip(_THIS_IP_, SOFTIRQ_DISABLE_OFFSET);
19 }
20 
21 extern void _local_bh_enable(void);
22 extern void __local_bh_enable_ip(unsigned long ip, unsigned int cnt);
23 
24 static inline void local_bh_enable_ip(unsigned long ip)
25 {
26 	__local_bh_enable_ip(ip, SOFTIRQ_DISABLE_OFFSET);
27 }
28 
29 static 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