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/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 */
  43