Эх сурвалжийг харах

sched/arch: Introduce the finish_arch_post_lock_switch() scheduler callback

This callback is called by the scheduler after rq->lock has been released
and interrupts enabled. It will be used in subsequent patches on the ARM
architecture.

Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Reviewed-by: Will Deacon <will.deacon@arm.com>
Reviewed-by: Frank Rowand <frank.rowand@am.sony.com>
Tested-by: Will Deacon <will.deacon@arm.com>
Tested-by: Marc Zyngier <Marc.Zyngier@arm.com>
Acked-by: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/n/20120313110840.7b444deb6b1bb902c15f3cdf@canb.auug.org.au
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Catalin Marinas 13 жил өмнө
parent
commit
01f23e1630

+ 1 - 0
kernel/sched/core.c

@@ -1932,6 +1932,7 @@ static void finish_task_switch(struct rq *rq, struct task_struct *prev)
 	local_irq_enable();
 	local_irq_enable();
 #endif /* __ARCH_WANT_INTERRUPTS_ON_CTXSW */
 #endif /* __ARCH_WANT_INTERRUPTS_ON_CTXSW */
 	finish_lock_switch(rq, prev);
 	finish_lock_switch(rq, prev);
+	finish_arch_post_lock_switch();
 
 
 	fire_sched_in_preempt_notifiers(current);
 	fire_sched_in_preempt_notifiers(current);
 	if (mm)
 	if (mm)

+ 3 - 0
kernel/sched/sched.h

@@ -692,6 +692,9 @@ static inline int task_running(struct rq *rq, struct task_struct *p)
 #ifndef finish_arch_switch
 #ifndef finish_arch_switch
 # define finish_arch_switch(prev)	do { } while (0)
 # define finish_arch_switch(prev)	do { } while (0)
 #endif
 #endif
+#ifndef finish_arch_post_lock_switch
+# define finish_arch_post_lock_switch()	do { } while (0)
+#endif
 
 
 #ifndef __ARCH_WANT_UNLOCKED_CTXSW
 #ifndef __ARCH_WANT_UNLOCKED_CTXSW
 static inline void prepare_lock_switch(struct rq *rq, struct task_struct *next)
 static inline void prepare_lock_switch(struct rq *rq, struct task_struct *next)