Messages in this thread Patch in this message | | | Date | Sat, 23 Apr 2011 21:39:40 +0800 | Subject | [PATCH] sched: try to rewrite tg_has_rt_tasks() | From | Hillf Danton <> |
| |
It is reshuffled not based upon scanning the list of existing threads but upon the relevant info carried by the input task group. Compared with the original, it is simpler, and nothing important is missed.
Signed-off-by: Hillf Danton <dhillf@gmail.com> ---
--- a/kernel/sched.c 2011-03-30 03:09:48.000000000 +0800 +++ b/kernel/sched.c 2011-04-23 21:48:14.000000000 +0800 @@ -8756,13 +8756,11 @@ static unsigned long to_ratio(u64 period /* Must be called with tasklist_lock held */ static inline int tg_has_rt_tasks(struct task_group *tg) { - struct task_struct *g, *p; - - do_each_thread(g, p) { - if (rt_task(p) && rt_rq_of_se(&p->rt)->tg == tg) + int cpu; + for_each_online_cpu(cpu) { + if (tg->rt_rq[cpu]->rt_nr_running != 0) return 1; - } while_each_thread(g, p); - + } return 0; }
| |