forked from mirrors/linux
		
	 e52340de11
			
		
	
	
		e52340de11
		
	
	
	
	
		
			
			bottom_half.h needs _THIS_IP_ to be standalone, so split that and _RET_IP_ out from kernel.h into the new instruction_pointer.h. kernel.h directly needs them, so include it there and replace the include of kernel.h with this new file in bottom_half.h. Link: https://lkml.kernel.org/r/20211028161248.45232-1-andriy.shevchenko@linux.intel.com Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
		
			
				
	
	
		
			42 lines
		
	
	
	
		
			1,013 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
	
		
			1,013 B
		
	
	
	
		
			C
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0 */
 | |
| #ifndef _LINUX_BH_H
 | |
| #define _LINUX_BH_H
 | |
| 
 | |
| #include <linux/instruction_pointer.h>
 | |
| #include <linux/preempt.h>
 | |
| 
 | |
| #if defined(CONFIG_PREEMPT_RT) || defined(CONFIG_TRACE_IRQFLAGS)
 | |
| extern void __local_bh_disable_ip(unsigned long ip, unsigned int cnt);
 | |
| #else
 | |
| static __always_inline void __local_bh_disable_ip(unsigned long ip, unsigned int cnt)
 | |
| {
 | |
| 	preempt_count_add(cnt);
 | |
| 	barrier();
 | |
| }
 | |
| #endif
 | |
| 
 | |
| static inline void local_bh_disable(void)
 | |
| {
 | |
| 	__local_bh_disable_ip(_THIS_IP_, SOFTIRQ_DISABLE_OFFSET);
 | |
| }
 | |
| 
 | |
| extern void _local_bh_enable(void);
 | |
| extern void __local_bh_enable_ip(unsigned long ip, unsigned int cnt);
 | |
| 
 | |
| static inline void local_bh_enable_ip(unsigned long ip)
 | |
| {
 | |
| 	__local_bh_enable_ip(ip, SOFTIRQ_DISABLE_OFFSET);
 | |
| }
 | |
| 
 | |
| static inline void local_bh_enable(void)
 | |
| {
 | |
| 	__local_bh_enable_ip(_THIS_IP_, SOFTIRQ_DISABLE_OFFSET);
 | |
| }
 | |
| 
 | |
| #ifdef CONFIG_PREEMPT_RT
 | |
| extern bool local_bh_blocked(void);
 | |
| #else
 | |
| static inline bool local_bh_blocked(void) { return false; }
 | |
| #endif
 | |
| 
 | |
| #endif /* _LINUX_BH_H */
 |