aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/sched_fair.c
diff options
context:
space:
mode:
authorSrivatsa Vaddagiri <vatsa@linux.vnet.ibm.com>2008-01-25 15:07:59 -0500
committerIngo Molnar <mingo@elte.hu>2008-01-25 15:07:59 -0500
commitec2c507fe8c8fa3c04fc6cb99a382a965c477379 (patch)
treef139f738ba08576318ec09047148cdc7ae33ac9b /kernel/sched_fair.c
parent93f992ccc008dd4030381caeebb252e85e66684b (diff)
sched: group scheduling, minor fixes
Minor bug fixes for the group scheduler: - Use a mutex to serialize add/remove of task groups and also when changing shares of a task group. Use the same mutex when printing cfs_rq debugging stats for various task groups. - Use list_for_each_entry_rcu in for_each_leaf_cfs_rq macro (when walking task group list) Signed-off-by: Srivatsa Vaddagiri <vatsa@linux.vnet.ibm.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel/sched_fair.c')
-rw-r--r--kernel/sched_fair.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/kernel/sched_fair.c b/kernel/sched_fair.c
index da7c061e720..0c5fdce6722 100644
--- a/kernel/sched_fair.c
+++ b/kernel/sched_fair.c
@@ -690,7 +690,7 @@ static inline struct cfs_rq *cpu_cfs_rq(struct cfs_rq *cfs_rq, int this_cpu)
690 690
691/* Iterate thr' all leaf cfs_rq's on a runqueue */ 691/* Iterate thr' all leaf cfs_rq's on a runqueue */
692#define for_each_leaf_cfs_rq(rq, cfs_rq) \ 692#define for_each_leaf_cfs_rq(rq, cfs_rq) \
693 list_for_each_entry(cfs_rq, &rq->leaf_cfs_rq_list, leaf_cfs_rq_list) 693 list_for_each_entry_rcu(cfs_rq, &rq->leaf_cfs_rq_list, leaf_cfs_rq_list)
694 694
695/* Do the two (enqueued) entities belong to the same group ? */ 695/* Do the two (enqueued) entities belong to the same group ? */
696static inline int 696static inline int
@@ -1132,7 +1132,9 @@ static void print_cfs_stats(struct seq_file *m, int cpu)
1132#ifdef CONFIG_FAIR_GROUP_SCHED 1132#ifdef CONFIG_FAIR_GROUP_SCHED
1133 print_cfs_rq(m, cpu, &cpu_rq(cpu)->cfs); 1133 print_cfs_rq(m, cpu, &cpu_rq(cpu)->cfs);
1134#endif 1134#endif
1135 lock_task_group_list();
1135 for_each_leaf_cfs_rq(cpu_rq(cpu), cfs_rq) 1136 for_each_leaf_cfs_rq(cpu_rq(cpu), cfs_rq)
1136 print_cfs_rq(m, cpu, cfs_rq); 1137 print_cfs_rq(m, cpu, cfs_rq);
1138 unlock_task_group_list();
1137} 1139}
1138#endif 1140#endif