diff options
Diffstat (limited to 'kernel/sched.c')
-rw-r--r-- | kernel/sched.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/kernel/sched.c b/kernel/sched.c index 1874c7418319..4cdc91cf48f6 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
@@ -5138,7 +5138,20 @@ EXPORT_SYMBOL(task_nice); | |||
5138 | */ | 5138 | */ |
5139 | int idle_cpu(int cpu) | 5139 | int idle_cpu(int cpu) |
5140 | { | 5140 | { |
5141 | return cpu_curr(cpu) == cpu_rq(cpu)->idle; | 5141 | struct rq *rq = cpu_rq(cpu); |
5142 | |||
5143 | if (rq->curr != rq->idle) | ||
5144 | return 0; | ||
5145 | |||
5146 | if (rq->nr_running) | ||
5147 | return 0; | ||
5148 | |||
5149 | #ifdef CONFIG_SMP | ||
5150 | if (!llist_empty(&rq->wake_list)) | ||
5151 | return 0; | ||
5152 | #endif | ||
5153 | |||
5154 | return 1; | ||
5142 | } | 5155 | } |
5143 | 5156 | ||
5144 | /** | 5157 | /** |