diff options
Diffstat (limited to 'kernel/sched/core.c')
-rw-r--r-- | kernel/sched/core.c | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 0ac0f811d623..cecbb64be05f 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c | |||
@@ -7563,24 +7563,31 @@ cpu_cgroup_destroy(struct cgroup_subsys *ss, struct cgroup *cgrp) | |||
7563 | sched_destroy_group(tg); | 7563 | sched_destroy_group(tg); |
7564 | } | 7564 | } |
7565 | 7565 | ||
7566 | static int | 7566 | static int cpu_cgroup_can_attach(struct cgroup_subsys *ss, struct cgroup *cgrp, |
7567 | cpu_cgroup_can_attach_task(struct cgroup *cgrp, struct task_struct *tsk) | 7567 | struct cgroup_taskset *tset) |
7568 | { | 7568 | { |
7569 | struct task_struct *task; | ||
7570 | |||
7571 | cgroup_taskset_for_each(task, cgrp, tset) { | ||
7569 | #ifdef CONFIG_RT_GROUP_SCHED | 7572 | #ifdef CONFIG_RT_GROUP_SCHED |
7570 | if (!sched_rt_can_attach(cgroup_tg(cgrp), tsk)) | 7573 | if (!sched_rt_can_attach(cgroup_tg(cgrp), task)) |
7571 | return -EINVAL; | 7574 | return -EINVAL; |
7572 | #else | 7575 | #else |
7573 | /* We don't support RT-tasks being in separate groups */ | 7576 | /* We don't support RT-tasks being in separate groups */ |
7574 | if (tsk->sched_class != &fair_sched_class) | 7577 | if (task->sched_class != &fair_sched_class) |
7575 | return -EINVAL; | 7578 | return -EINVAL; |
7576 | #endif | 7579 | #endif |
7580 | } | ||
7577 | return 0; | 7581 | return 0; |
7578 | } | 7582 | } |
7579 | 7583 | ||
7580 | static void | 7584 | static void cpu_cgroup_attach(struct cgroup_subsys *ss, struct cgroup *cgrp, |
7581 | cpu_cgroup_attach_task(struct cgroup *cgrp, struct task_struct *tsk) | 7585 | struct cgroup_taskset *tset) |
7582 | { | 7586 | { |
7583 | sched_move_task(tsk); | 7587 | struct task_struct *task; |
7588 | |||
7589 | cgroup_taskset_for_each(task, cgrp, tset) | ||
7590 | sched_move_task(task); | ||
7584 | } | 7591 | } |
7585 | 7592 | ||
7586 | static void | 7593 | static void |
@@ -7915,8 +7922,8 @@ struct cgroup_subsys cpu_cgroup_subsys = { | |||
7915 | .name = "cpu", | 7922 | .name = "cpu", |
7916 | .create = cpu_cgroup_create, | 7923 | .create = cpu_cgroup_create, |
7917 | .destroy = cpu_cgroup_destroy, | 7924 | .destroy = cpu_cgroup_destroy, |
7918 | .can_attach_task = cpu_cgroup_can_attach_task, | 7925 | .can_attach = cpu_cgroup_can_attach, |
7919 | .attach_task = cpu_cgroup_attach_task, | 7926 | .attach = cpu_cgroup_attach, |
7920 | .exit = cpu_cgroup_exit, | 7927 | .exit = cpu_cgroup_exit, |
7921 | .populate = cpu_cgroup_populate, | 7928 | .populate = cpu_cgroup_populate, |
7922 | .subsys_id = cpu_cgroup_subsys_id, | 7929 | .subsys_id = cpu_cgroup_subsys_id, |