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