diff options
Diffstat (limited to 'include/linux/hardirq.h')
| -rw-r--r-- | include/linux/hardirq.h | 11 | 
1 files changed, 9 insertions, 2 deletions
diff --git a/include/linux/hardirq.h b/include/linux/hardirq.h index d5b387669dab..96c323ac44df 100644 --- a/include/linux/hardirq.h +++ b/include/linux/hardirq.h @@ -64,6 +64,8 @@  #define HARDIRQ_OFFSET	(1UL << HARDIRQ_SHIFT)  #define NMI_OFFSET	(1UL << NMI_SHIFT) +#define SOFTIRQ_DISABLE_OFFSET	(2 * SOFTIRQ_OFFSET) +  #ifndef PREEMPT_ACTIVE  #define PREEMPT_ACTIVE_BITS	1  #define PREEMPT_ACTIVE_SHIFT	(NMI_SHIFT + NMI_BITS) @@ -82,10 +84,13 @@  /*   * 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?   */  #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? @@ -132,14 +137,16 @@ extern void synchronize_irq(unsigned int irq);  struct task_struct; -#ifndef CONFIG_VIRT_CPU_ACCOUNTING +#if !defined(CONFIG_VIRT_CPU_ACCOUNTING) && !defined(CONFIG_IRQ_TIME_ACCOUNTING)  static inline void account_system_vtime(struct task_struct *tsk)  {  } +#else +extern void account_system_vtime(struct task_struct *tsk);  #endif  #if defined(CONFIG_NO_HZ) -#if defined(CONFIG_TINY_RCU) +#if defined(CONFIG_TINY_RCU) || defined(CONFIG_TINY_PREEMPT_RCU)  extern void rcu_enter_nohz(void);  extern void rcu_exit_nohz(void);  | 
