Linux Audio

Check our new training course

Embedded Linux Audio

Check our new training course
with Creative Commons CC-BY-SA
lecture materials

Bootlin logo

Elixir Cross Referencer

Loading...
/*
 * BK Id: %F% %I% %G% %U% %#%
 */
#ifdef __KERNEL__
#ifndef __ASM_SOFTIRQ_H
#define __ASM_SOFTIRQ_H

#include <linux/preempt.h>
#include <asm/hardirq.h>

#define local_bh_disable()			\
do {						\
	preempt_count() += SOFTIRQ_OFFSET;	\
	barrier();				\
} while (0)

#define __local_bh_enable()			\
do {						\
	barrier();				\
	preempt_count() -= SOFTIRQ_OFFSET;	\
} while (0)

#define local_bh_enable()					\
do {								\
	__local_bh_enable();					\
	if (unlikely(!in_interrupt()				\
		     && softirq_pending(smp_processor_id())))	\
		do_softirq();					\
	if (preempt_count() == 0)				\
		preempt_check_resched(); 			\
} while (0)

#endif	/* __ASM_SOFTIRQ_H */
#endif /* __KERNEL__ */