diff options
author | Catalin Marinas <catalin.marinas@arm.com> | 2011-11-27 16:43:10 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2012-03-13 05:17:45 -0400 |
commit | 01f23e1630d944f7085cd8fd5793e31ea91c03d8 (patch) | |
tree | f21651af720e87721c3829ff69a41c5a9d8cb31d | |
parent | fde7d9049e55ab85a390be7f415d74c9f62dd0f9 (diff) |
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>
-rw-r--r-- | kernel/sched/core.c | 1 | ||||
-rw-r--r-- | kernel/sched/sched.h | 3 |
2 files changed, 4 insertions, 0 deletions
diff --git a/kernel/sched/core.c b/kernel/sched/core.c index b342f57879e6..423f40f32a59 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c | |||
@@ -1932,6 +1932,7 @@ static void finish_task_switch(struct rq *rq, struct task_struct *prev) | |||
1932 | local_irq_enable(); | 1932 | local_irq_enable(); |
1933 | #endif /* __ARCH_WANT_INTERRUPTS_ON_CTXSW */ | 1933 | #endif /* __ARCH_WANT_INTERRUPTS_ON_CTXSW */ |
1934 | finish_lock_switch(rq, prev); | 1934 | finish_lock_switch(rq, prev); |
1935 | finish_arch_post_lock_switch(); | ||
1935 | 1936 | ||
1936 | fire_sched_in_preempt_notifiers(current); | 1937 | fire_sched_in_preempt_notifiers(current); |
1937 | if (mm) | 1938 | if (mm) |
diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h index 98c0c2623db8..d72483d07c9f 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h | |||
@@ -692,6 +692,9 @@ static inline int task_running(struct rq *rq, struct task_struct *p) | |||
692 | #ifndef finish_arch_switch | 692 | #ifndef finish_arch_switch |
693 | # define finish_arch_switch(prev) do { } while (0) | 693 | # define finish_arch_switch(prev) do { } while (0) |
694 | #endif | 694 | #endif |
695 | #ifndef finish_arch_post_lock_switch | ||
696 | # define finish_arch_post_lock_switch() do { } while (0) | ||
697 | #endif | ||
695 | 698 | ||
696 | #ifndef __ARCH_WANT_UNLOCKED_CTXSW | 699 | #ifndef __ARCH_WANT_UNLOCKED_CTXSW |
697 | static inline void prepare_lock_switch(struct rq *rq, struct task_struct *next) | 700 | static inline void prepare_lock_switch(struct rq *rq, struct task_struct *next) |