static int cgrp_css_online(struct cgroup_subsys_state *css)
{
	struct cgroup_cls_state *cs = css_cls_state(css);
	struct cgroup_cls_state *parent = css_cls_state(css->parent);

	if (parent)
		cs->classid = parent->classid;

	return 0;
}
Пример #2
0
static void cgrp_attach(struct cgroup_taskset *tset)
{
	struct cgroup_subsys_state *css;

	cgroup_taskset_first(tset, &css);
	update_classid(css,
		       (void *)(unsigned long)css_cls_state(css)->classid);
}
Пример #3
0
static void cgrp_attach(struct cgroup_taskset *tset)
{
	struct cgroup_subsys_state *css;
	struct task_struct *p;

	cgroup_taskset_for_each(p, css, tset) {
		task_lock(p);
		iterate_fd(p->files, 0, update_classid_sock,
			   (void *)(unsigned long)css_cls_state(css)->classid);
		task_unlock(p);
	}
Пример #4
0
static int write_classid(struct cgroup_subsys_state *css, struct cftype *cft,
			 u64 value)
{
	struct cgroup_cls_state *cs = css_cls_state(css);

	cgroup_sk_alloc_disable();

	cs->classid = (u32)value;

	update_classid(css, (void *)(unsigned long)cs->classid);
	return 0;
}
static void cgrp_css_free(struct cgroup_subsys_state *css)
{
	kfree(css_cls_state(css));
}
struct cgroup_cls_state *task_cls_state(struct task_struct *p)
{
	return css_cls_state(task_css(p, net_cls_cgrp_id));
}
Пример #7
0
struct cgroup_cls_state *task_cls_state(struct task_struct *p)
{
	return css_cls_state(task_css_check(p, net_cls_cgrp_id,
					    rcu_read_lock_bh_held()));
}
Пример #8
0
static u64 read_classid(struct cgroup_subsys_state *css, struct cftype *cft)
{
	return css_cls_state(css)->classid;
}