Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+18 −35
Original line number Diff line number Diff line
@@ -7124,25 +7124,25 @@ unsigned long sched_group_shares(struct task_group *tg)
#ifdef CONFIG_FAIR_CGROUP_SCHED

/* 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);
}

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;

	if (!cont->parent) {
	if (!cgrp->parent) {
		/* 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;
	}

	/* we support only 1-level deep hierarchical scheduler atm */
	if (cont->parent->parent)
	if (cgrp->parent->parent)
		return ERR_PTR(-EINVAL);

	tg = sched_create_group();
@@ -7150,21 +7150,21 @@ cpu_cgroup_create(struct cgroup_subsys *ss, struct cgroup *cont)
		return ERR_PTR(-ENOMEM);

	/* Bind the cgroup to task_group object we just created */
	tg->css.cgroup = cont;
	tg->css.cgroup = cgrp;

	return &tg->css;
}

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);
}

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 */
	if (tsk->sched_class != &fair_sched_class)
@@ -7174,38 +7174,21 @@ static int cpu_cgroup_can_attach(struct cgroup_subsys *ss,
}

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)
{
	sched_move_task(tsk);
}

static ssize_t cpu_shares_write(struct cgroup *cont, struct cftype *cftype,
				struct file *file, const char __user *userbuf,
				size_t nbytes, loff_t *ppos)
static int cpu_shares_write_uint(struct cgroup *cgrp, struct cftype *cftype,
				u64 shareval)
{
	unsigned long 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);
	return sched_group_set_shares(cgroup_tg(cgrp), shareval);
}

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;
}
@@ -7213,7 +7196,7 @@ static u64 cpu_shares_read_uint(struct cgroup *cont, struct cftype *cft)
static struct cftype cpu_shares = {
	.name = "shares",
	.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)