diff options
Diffstat (limited to 'include/linux/preempt.h')
| -rw-r--r-- | include/linux/preempt.h | 21 | 
1 files changed, 13 insertions, 8 deletions
diff --git a/include/linux/preempt.h b/include/linux/preempt.h index 75e4e30677f1..7eeceac52dea 100644 --- a/include/linux/preempt.h +++ b/include/linux/preempt.h @@ -65,19 +65,24 @@  /*   * Are we doing bottom half or hardware interrupt processing? - * Are we in a softirq context? Interrupt context? - * in_softirq - Are we currently processing softirq or have bh disabled? - * in_serving_softirq - Are we currently processing softirq? + * + * in_irq()       - We're in (hard) IRQ context + * in_softirq()   - We have BH disabled, or are processing softirqs + * in_interrupt() - We're in NMI,IRQ,SoftIRQ context or have BH disabled + * in_serving_softirq() - We're in softirq context + * in_nmi()       - We're in NMI context + * in_task()	  - We're in task context + * + * Note: due to the BH disabled confusion: in_softirq(),in_interrupt() really + *       should not be used in new code.   */  #define in_irq()		(hardirq_count())  #define in_softirq()		(softirq_count())  #define in_interrupt()		(irq_count())  #define in_serving_softirq()	(softirq_count() & SOFTIRQ_OFFSET) - -/* - * Are we in NMI context? - */ -#define in_nmi()	(preempt_count() & NMI_MASK) +#define in_nmi()		(preempt_count() & NMI_MASK) +#define in_task()		(!(preempt_count() & \ +				   (NMI_MASK | HARDIRQ_MASK | SOFTIRQ_OFFSET)))  /*   * The preempt_count offset after preempt_disable();  |