bottom_half.h 803 B

1234567891011121314151617181920212223242526272829303132333435
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. #ifndef _LINUX_BH_H
  3. #define _LINUX_BH_H
  4. #include <linux/preempt.h>
  5. #ifdef CONFIG_TRACE_IRQFLAGS
  6. extern void __local_bh_disable_ip(unsigned long ip, unsigned int cnt);
  7. #else
  8. static __always_inline void __local_bh_disable_ip(unsigned long ip, unsigned int cnt)
  9. {
  10. preempt_count_add(cnt);
  11. barrier();
  12. }
  13. #endif
  14. static inline void local_bh_disable(void)
  15. {
  16. __local_bh_disable_ip(_THIS_IP_, SOFTIRQ_DISABLE_OFFSET);
  17. }
  18. extern void _local_bh_enable(void);
  19. extern void __local_bh_enable_ip(unsigned long ip, unsigned int cnt);
  20. static inline void local_bh_enable_ip(unsigned long ip)
  21. {
  22. __local_bh_enable_ip(ip, SOFTIRQ_DISABLE_OFFSET);
  23. }
  24. static inline void local_bh_enable(void)
  25. {
  26. __local_bh_enable_ip(_THIS_IP_, SOFTIRQ_DISABLE_OFFSET);
  27. }
  28. #endif /* _LINUX_BH_H */