genirq: Provide __irq_enter/exit_raw()
Like __irq_enter/exit() but without time accounting. To be used for "empty" system vectors like the scheduler IPI to avoid the overhead. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Ingo Molnar <mingo@kernel.org> Reviewed-by: Andy Lutomirski <luto@kernel.org> Link: https://lore.kernel.org/r/20200521202117.671682341@linutronix.de
This commit is contained in:
Родитель
8a6bc4787f
Коммит
98a3bf195e
|
@ -37,6 +37,17 @@ static __always_inline void rcu_irq_enter_check_tick(void)
|
|||
lockdep_hardirq_enter(); \
|
||||
} while (0)
|
||||
|
||||
/*
|
||||
* Like __irq_enter() without time accounting for fast
|
||||
* interrupts, e.g. reschedule IPI where time accounting
|
||||
* is more expensive than the actual interrupt.
|
||||
*/
|
||||
#define __irq_enter_raw() \
|
||||
do { \
|
||||
preempt_count_add(HARDIRQ_OFFSET); \
|
||||
lockdep_hardirq_enter(); \
|
||||
} while (0)
|
||||
|
||||
/*
|
||||
* Enter irq context (on NO_HZ, update jiffies):
|
||||
*/
|
||||
|
@ -56,6 +67,15 @@ void irq_enter_rcu(void);
|
|||
preempt_count_sub(HARDIRQ_OFFSET); \
|
||||
} while (0)
|
||||
|
||||
/*
|
||||
* Like __irq_exit() without time accounting
|
||||
*/
|
||||
#define __irq_exit_raw() \
|
||||
do { \
|
||||
lockdep_hardirq_exit(); \
|
||||
preempt_count_sub(HARDIRQ_OFFSET); \
|
||||
} while (0)
|
||||
|
||||
/*
|
||||
* Exit irq context and process softirqs if needed:
|
||||
*/
|
||||
|
|
Загрузка…
Ссылка в новой задаче