bottom_half.h (1013B)
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) 9extern void __local_bh_disable_ip(unsigned long ip, unsigned int cnt); 10#else 11static __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 18static inline void local_bh_disable(void) 19{ 20 __local_bh_disable_ip(_THIS_IP_, SOFTIRQ_DISABLE_OFFSET); 21} 22 23extern void _local_bh_enable(void); 24extern void __local_bh_enable_ip(unsigned long ip, unsigned int cnt); 25 26static inline void local_bh_enable_ip(unsigned long ip) 27{ 28 __local_bh_enable_ip(ip, SOFTIRQ_DISABLE_OFFSET); 29} 30 31static inline void local_bh_enable(void) 32{ 33 __local_bh_enable_ip(_THIS_IP_, SOFTIRQ_DISABLE_OFFSET); 34} 35 36#ifdef CONFIG_PREEMPT_RT 37extern bool local_bh_blocked(void); 38#else 39static inline bool local_bh_blocked(void) { return false; } 40#endif 41 42#endif /* _LINUX_BH_H */