softirq: Reduce invoke_softirq() code duplication
The two invoke_softirq() variants are identical except for a single line. So move the #ifdef __ARCH_IRQ_EXIT_IRQS_DISABLED inside one of the functions and get rid of the other one. Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Cc: Ingo Molnar <mingo@elte.hu> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
parent
a09b659cd6
commit
b2a0017861
|
@ -310,31 +310,21 @@ void irq_enter(void)
|
||||||
__irq_enter();
|
__irq_enter();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void invoke_softirq(void)
|
||||||
|
{
|
||||||
|
if (!force_irqthreads) {
|
||||||
#ifdef __ARCH_IRQ_EXIT_IRQS_DISABLED
|
#ifdef __ARCH_IRQ_EXIT_IRQS_DISABLED
|
||||||
static inline void invoke_softirq(void)
|
|
||||||
{
|
|
||||||
if (!force_irqthreads)
|
|
||||||
__do_softirq();
|
__do_softirq();
|
||||||
else {
|
|
||||||
__local_bh_disable((unsigned long)__builtin_return_address(0),
|
|
||||||
SOFTIRQ_OFFSET);
|
|
||||||
wakeup_softirqd();
|
|
||||||
__local_bh_enable(SOFTIRQ_OFFSET);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#else
|
#else
|
||||||
static inline void invoke_softirq(void)
|
|
||||||
{
|
|
||||||
if (!force_irqthreads)
|
|
||||||
do_softirq();
|
do_softirq();
|
||||||
else {
|
#endif
|
||||||
|
} else {
|
||||||
__local_bh_disable((unsigned long)__builtin_return_address(0),
|
__local_bh_disable((unsigned long)__builtin_return_address(0),
|
||||||
SOFTIRQ_OFFSET);
|
SOFTIRQ_OFFSET);
|
||||||
wakeup_softirqd();
|
wakeup_softirqd();
|
||||||
__local_bh_enable(SOFTIRQ_OFFSET);
|
__local_bh_enable(SOFTIRQ_OFFSET);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Exit an interrupt context. Process softirqs if needed and possible:
|
* Exit an interrupt context. Process softirqs if needed and possible:
|
||||||
|
|
Loading…
Reference in New Issue