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

Commit d7926ee3 authored by Sridhar Samudrala's avatar Sridhar Samudrala Committed by Michael S. Tsirkin
Browse files

cgroups: Add an API to attach a task to current task's cgroup



Add a new kernel API to attach a task to current task's cgroup
in all the active hierarchies.

Signed-off-by: default avatarSridhar Samudrala <sri@us.ibm.com>
Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
Reviewed-by: default avatarPaul Menage <menage@google.com>
Acked-by: default avatarLi Zefan <lizf@cn.fujitsu.com>
parent c23f3445
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -570,6 +570,7 @@ struct task_struct *cgroup_iter_next(struct cgroup *cgrp,
void cgroup_iter_end(struct cgroup *cgrp, struct cgroup_iter *it);
int cgroup_scan_tasks(struct cgroup_scanner *scan);
int cgroup_attach_task(struct cgroup *, struct task_struct *);
int cgroup_attach_task_current_cg(struct task_struct *);

/*
 * CSS ID is ID for cgroup_subsys_state structs under subsys. This only works
@@ -626,6 +627,12 @@ static inline int cgroupstats_build(struct cgroupstats *stats,
	return -EINVAL;
}

/* No cgroups - nothing to do */
static inline int cgroup_attach_task_current_cg(struct task_struct *t)
{
	return 0;
}

#endif /* !CONFIG_CGROUPS */

#endif /* _LINUX_CGROUP_H */
+23 −0
Original line number Diff line number Diff line
@@ -1788,6 +1788,29 @@ int cgroup_attach_task(struct cgroup *cgrp, struct task_struct *tsk)
	return retval;
}

/**
 * cgroup_attach_task_current_cg - attach task 'tsk' to current task's cgroup
 * @tsk: the task to be attached
 */
int cgroup_attach_task_current_cg(struct task_struct *tsk)
{
	struct cgroupfs_root *root;
	struct cgroup *cur_cg;
	int retval = 0;

	cgroup_lock();
	for_each_active_root(root) {
		cur_cg = task_cgroup_from_root(current, root);
		retval = cgroup_attach_task(cur_cg, tsk);
		if (retval)
			break;
	}
	cgroup_unlock();

	return retval;
}
EXPORT_SYMBOL_GPL(cgroup_attach_task_current_cg);

/*
 * Attach task with pid 'pid' to cgroup 'cgrp'. Call with cgroup_mutex
 * held. May take task_lock of task