diff options
author | Srivatsa Vaddagiri <vatsa@linux.vnet.ibm.com> | 2008-01-25 15:07:59 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-01-25 15:07:59 -0500 |
commit | ec2c507fe8c8fa3c04fc6cb99a382a965c477379 (patch) | |
tree | f139f738ba08576318ec09047148cdc7ae33ac9b /kernel/sched_fair.c | |
parent | 93f992ccc008dd4030381caeebb252e85e66684b (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.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/kernel/sched_fair.c b/kernel/sched_fair.c index da7c061e7206..0c5fdce67228 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 ? */ |
696 | static inline int | 696 | static 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 |