Commit 2b01dfe3 authored by Paul Menage's avatar Paul Menage Committed by Ingo Molnar

sched: clean up some control group code

- replace "cont" with "cgrp" in a few places in the CFS cgroup code, 
- use write_uint rather than write for cpu.shares write function
Signed-off-by: default avatarPaul Menage <menage@google.com>
Acked-by : Srivatsa Vaddagiri <vatsa@linux.vnet.ibm.com>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent a8972ccf
...@@ -7124,25 +7124,25 @@ unsigned long sched_group_shares(struct task_group *tg) ...@@ -7124,25 +7124,25 @@ unsigned long sched_group_shares(struct task_group *tg)
#ifdef CONFIG_FAIR_CGROUP_SCHED #ifdef CONFIG_FAIR_CGROUP_SCHED
/* return corresponding task_group object of a cgroup */ /* return corresponding task_group object of a cgroup */
static inline struct task_group *cgroup_tg(struct cgroup *cont) static inline struct task_group *cgroup_tg(struct cgroup *cgrp)
{ {
return container_of(cgroup_subsys_state(cont, cpu_cgroup_subsys_id), return container_of(cgroup_subsys_state(cgrp, cpu_cgroup_subsys_id),
struct task_group, css); struct task_group, css);
} }
static struct cgroup_subsys_state * static struct cgroup_subsys_state *
cpu_cgroup_create(struct cgroup_subsys *ss, struct cgroup *cont) cpu_cgroup_create(struct cgroup_subsys *ss, struct cgroup *cgrp)
{ {
struct task_group *tg; struct task_group *tg;
if (!cont->parent) { if (!cgrp->parent) {
/* This is early initialization for the top cgroup */ /* This is early initialization for the top cgroup */
init_task_group.css.cgroup = cont; init_task_group.css.cgroup = cgrp;
return &init_task_group.css; return &init_task_group.css;
} }
/* we support only 1-level deep hierarchical scheduler atm */ /* we support only 1-level deep hierarchical scheduler atm */
if (cont->parent->parent) if (cgrp->parent->parent)
return ERR_PTR(-EINVAL); return ERR_PTR(-EINVAL);
tg = sched_create_group(); tg = sched_create_group();
...@@ -7150,21 +7150,21 @@ cpu_cgroup_create(struct cgroup_subsys *ss, struct cgroup *cont) ...@@ -7150,21 +7150,21 @@ cpu_cgroup_create(struct cgroup_subsys *ss, struct cgroup *cont)
return ERR_PTR(-ENOMEM); return ERR_PTR(-ENOMEM);
/* Bind the cgroup to task_group object we just created */ /* Bind the cgroup to task_group object we just created */
tg->css.cgroup = cont; tg->css.cgroup = cgrp;
return &tg->css; return &tg->css;
} }
static void cpu_cgroup_destroy(struct cgroup_subsys *ss, static void cpu_cgroup_destroy(struct cgroup_subsys *ss,
struct cgroup *cont) struct cgroup *cgrp)
{ {
struct task_group *tg = cgroup_tg(cont); struct task_group *tg = cgroup_tg(cgrp);
sched_destroy_group(tg); sched_destroy_group(tg);
} }
static int cpu_cgroup_can_attach(struct cgroup_subsys *ss, static int cpu_cgroup_can_attach(struct cgroup_subsys *ss,
struct cgroup *cont, struct task_struct *tsk) struct cgroup *cgrp, struct task_struct *tsk)
{ {
/* We don't support RT-tasks being in separate groups */ /* We don't support RT-tasks being in separate groups */
if (tsk->sched_class != &fair_sched_class) if (tsk->sched_class != &fair_sched_class)
...@@ -7174,38 +7174,21 @@ static int cpu_cgroup_can_attach(struct cgroup_subsys *ss, ...@@ -7174,38 +7174,21 @@ static int cpu_cgroup_can_attach(struct cgroup_subsys *ss,
} }
static void static void
cpu_cgroup_attach(struct cgroup_subsys *ss, struct cgroup *cont, cpu_cgroup_attach(struct cgroup_subsys *ss, struct cgroup *cgrp,
struct cgroup *old_cont, struct task_struct *tsk) struct cgroup *old_cont, struct task_struct *tsk)
{ {
sched_move_task(tsk); sched_move_task(tsk);
} }
static ssize_t cpu_shares_write(struct cgroup *cont, struct cftype *cftype, static int cpu_shares_write_uint(struct cgroup *cgrp, struct cftype *cftype,
struct file *file, const char __user *userbuf, u64 shareval)
size_t nbytes, loff_t *ppos)
{ {
unsigned long shareval; return sched_group_set_shares(cgroup_tg(cgrp), shareval);
struct task_group *tg = cgroup_tg(cont);
char buffer[2*sizeof(unsigned long) + 1];
int rc;
if (nbytes > 2*sizeof(unsigned long)) /* safety check */
return -E2BIG;
if (copy_from_user(buffer, userbuf, nbytes))
return -EFAULT;
buffer[nbytes] = 0; /* nul-terminate */
shareval = simple_strtoul(buffer, NULL, 10);
rc = sched_group_set_shares(tg, shareval);
return (rc < 0 ? rc : nbytes);
} }
static u64 cpu_shares_read_uint(struct cgroup *cont, struct cftype *cft) static u64 cpu_shares_read_uint(struct cgroup *cgrp, struct cftype *cft)
{ {
struct task_group *tg = cgroup_tg(cont); struct task_group *tg = cgroup_tg(cgrp);
return (u64) tg->shares; return (u64) tg->shares;
} }
...@@ -7213,7 +7196,7 @@ static u64 cpu_shares_read_uint(struct cgroup *cont, struct cftype *cft) ...@@ -7213,7 +7196,7 @@ static u64 cpu_shares_read_uint(struct cgroup *cont, struct cftype *cft)
static struct cftype cpu_shares = { static struct cftype cpu_shares = {
.name = "shares", .name = "shares",
.read_uint = cpu_shares_read_uint, .read_uint = cpu_shares_read_uint,
.write = cpu_shares_write, .write_uint = cpu_shares_write_uint,
}; };
static int cpu_cgroup_populate(struct cgroup_subsys *ss, struct cgroup *cont) static int cpu_cgroup_populate(struct cgroup_subsys *ss, struct cgroup *cont)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment