1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef _LINUX_BH_H 3 #define _LINUX_BH_H 4 5 #include <linux/instruction_pointer.h> 6 #include <linux/preempt.h> 7 8 #if defined(CONFIG_PREEMPT_RT) || defined(CONFIG_TRACE_IRQFLAGS) 9 extern void __local_bh_disable_ip(unsigned long ip, unsigned int cnt); 10 #else 11 static __always_inline void __local_bh_disable_ip(unsigned long ip, unsigned int cnt) 12 { 13 preempt_count_add(cnt); 14 barrier(); 15 } 16 #endif 17 18 static inline void local_bh_disable(void) 19 { 20 __local_bh_disable_ip(_THIS_IP_, SOFTIRQ_DISABLE_OFFSET); 21 } 22 23 extern void _local_bh_enable(void); 24 extern void __local_bh_enable_ip(unsigned long ip, unsigned int cnt); 25 26 static inline void local_bh_enable_ip(unsigned long ip) 27 { 28 __local_bh_enable_ip(ip, SOFTIRQ_DISABLE_OFFSET); 29 } 30 31 static inline void local_bh_enable(void) 32 { 33 __local_bh_enable_ip(_THIS_IP_, SOFTIRQ_DISABLE_OFFSET); 34 } 35 36 #ifdef CONFIG_PREEMPT_RT 37 extern bool local_bh_blocked(void); 38 #else 39 static inline bool local_bh_blocked(void) { return false; } 40 #endif 41 42 #endif /* _LINUX_BH_H */ 43
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.