mirror of
https://github.com/torvalds/linux.git
synced 2024-11-07 20:51:47 +00:00
0430499ce9
This way we can exit the RCU extended quiescent state before we schedule a new task from irq/exception exit. Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com> Cc: Alessio Igor Bogani <abogani@kernel.org> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Avi Kivity <avi@redhat.com> Cc: Chris Metcalf <cmetcalf@tilera.com> Cc: Christoph Lameter <cl@linux.com> Cc: Geoff Levand <geoff@infradead.org> Cc: Gilad Ben Yossef <gilad@benyossef.com> Cc: Hakan Akkan <hakanakkan@gmail.com> Cc: H. Peter Anvin <hpa@zytor.com> Cc: Ingo Molnar <mingo@kernel.org> Cc: Josh Triplett <josh@joshtriplett.org> Cc: Kevin Hilman <khilman@ti.com> Cc: Max Krasnyansky <maxk@qualcomm.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Stephen Hemminger <shemminger@vyatta.com> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Sven-Thorsten Dietrich <thebigcorporation@gmail.com> Cc: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Reviewed-by: Josh Triplett <josh@joshtriplett.org>
33 lines
518 B
C
33 lines
518 B
C
#ifndef _ASM_X86_RCU_H
|
|
#define _ASM_X86_RCU_H
|
|
|
|
#ifndef __ASSEMBLY__
|
|
|
|
#include <linux/rcupdate.h>
|
|
#include <asm/ptrace.h>
|
|
|
|
static inline void exception_enter(struct pt_regs *regs)
|
|
{
|
|
rcu_user_exit();
|
|
}
|
|
|
|
static inline void exception_exit(struct pt_regs *regs)
|
|
{
|
|
#ifdef CONFIG_RCU_USER_QS
|
|
if (user_mode(regs))
|
|
rcu_user_enter();
|
|
#endif
|
|
}
|
|
|
|
#else /* __ASSEMBLY__ */
|
|
|
|
#ifdef CONFIG_RCU_USER_QS
|
|
# define SCHEDULE_USER call schedule_user
|
|
#else
|
|
# define SCHEDULE_USER call schedule
|
|
#endif
|
|
|
|
#endif /* !__ASSEMBLY__ */
|
|
|
|
#endif
|