<para>
You can tell you are in a softirq (or bottom half, or tasklet)
using the <function>in_softirq()</function> macro
- (<filename class=headerfile>include/asm/softirq.h</filename>).
+ (<filename class=headerfile>include/asm/hardirq.h</filename>).
</para>
<caution>
<para>
<sect1 id="routines-softirqs">
<title><function>local_bh_disable()</function>/<function>local_bh_enable()</function>
- <filename class=headerfile>include/asm/softirq.h</filename></title>
+ <filename class=headerfile>include/linux/interrupt.h</filename></title>
<para>
These routines disable soft interrupts on the local CPU, and
This works perfectly for <firstterm linkend="gloss-up"><acronym>UP
</acronym></firstterm> as well: the spin lock vanishes, and this macro
simply becomes <function>local_bh_disable()</function>
- (<filename class=headerfile>include/asm/softirq.h</filename>), which
+ (<filename class=headerfile>include/linux/interrupt.h</filename>), which
protects you from the bottom half being run.
</para>
</sect1>
#endif
/*
- * Our do_softirq out of line code. See include/asm-arm/softirq.h for
+ * Our do_softirq out of line code. See include/asm-arm/hardirq.h for
* the calling assembly.
*/
ENTRY(__do_softirq)
#endif
/*
- * Our do_softirq out of line code. See include/asm-arm/softirq.h for
+ * Our do_softirq out of line code. See include/asm-arm26/hardirq.h for
* the calling assembly.
*/
ENTRY(__do_softirq)
#include <asm/semaphore.h>
#include <asm/checksum.h>
#include <asm/hardirq.h>
-#include <asm/softirq.h>
#include <asm/current.h>
//asmlinkage long long __ashrdi3 (long long, int);
#include <asm/page.h>
#include <asm/pgalloc.h>
#include <asm/semaphore.h>
-#include <asm/softirq.h>
#include <asm/uaccess.h>
#ifdef CONFIG_BLK_DEV_FD
#include <asm/floppy.h>
#include <linux/cache.h>
#include <linux/threads.h>
-/* softirq.h is sensitive to the offsets of these fields */
typedef struct {
unsigned int __softirq_pending;
unsigned int __local_irq_count;
+++ /dev/null
-#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()))) \
- __asm__("bl%? __do_softirq": : : "lr");/* out of line */\
- preempt_check_resched(); \
-} while (0)
-
-#endif /* __ASM_SOFTIRQ_H */
+++ /dev/null
-#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(); \
- preempt_check_resched(); \
-} while (0)
-
-#endif /* __ASM_SOFTIRQ_H */