Skip to content

Commit

Permalink
cgroup: change cgroup_from_id() to css_from_id()
Browse files Browse the repository at this point in the history
Now we want cgroup core to always provide the css to use to the
subsystems, so change this API to css_from_id().

Uninline css_from_id(), because it's getting bigger and cgroup_css()
has been unexported.

While at it, remove the #ifdef, and shuffle the order of the args.

Signed-off-by: Li Zefan <[email protected]>
Signed-off-by: Tejun Heo <[email protected]>
  • Loading branch information
lizf-os authored and htejun committed Aug 19, 2013
1 parent 930913a commit 1cb650b
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 18 deletions.
20 changes: 2 additions & 18 deletions include/linux/cgroup.h
Original file line number Diff line number Diff line change
Expand Up @@ -741,27 +741,11 @@ static inline struct cgroup *task_cgroup(struct task_struct *task,
return task_css(task, subsys_id)->cgroup;
}

/**
* cgroup_from_id - lookup cgroup by id
* @ss: cgroup subsys to be looked into
* @id: the cgroup id
*
* Returns the cgroup if there's valid one with @id, otherwise returns NULL.
* Should be called under rcu_read_lock().
*/
static inline struct cgroup *cgroup_from_id(struct cgroup_subsys *ss, int id)
{
#ifdef CONFIG_PROVE_RCU
rcu_lockdep_assert(rcu_read_lock_held() ||
lockdep_is_held(&cgroup_mutex),
"cgroup_from_id() needs proper protection");
#endif
return idr_find(&ss->root->cgroup_idr, id);
}

struct cgroup_subsys_state *css_next_child(struct cgroup_subsys_state *pos,
struct cgroup_subsys_state *parent);

struct cgroup_subsys_state *css_from_id(int id, struct cgroup_subsys *ss);

/**
* css_for_each_child - iterate through children of a css
* @pos: the css * to use as the loop cursor
Expand Down
22 changes: 22 additions & 0 deletions kernel/cgroup.c
Original file line number Diff line number Diff line change
Expand Up @@ -5717,6 +5717,28 @@ struct cgroup_subsys_state *cgroup_css_from_dir(struct file *f, int id)
return css ? css : ERR_PTR(-ENOENT);
}

/**
* css_from_id - lookup css by id
* @id: the cgroup id
* @ss: cgroup subsys to be looked into
*
* Returns the css if there's valid one with @id, otherwise returns NULL.
* Should be called under rcu_read_lock().
*/
struct cgroup_subsys_state *css_from_id(int id, struct cgroup_subsys *ss)
{
struct cgroup *cgrp;

rcu_lockdep_assert(rcu_read_lock_held() ||
lockdep_is_held(&cgroup_mutex),
"css_from_id() needs proper protection");

cgrp = idr_find(&ss->root->cgroup_idr, id);
if (cgrp)
return cgroup_css(cgrp, ss->subsys_id);
return NULL;
}

#ifdef CONFIG_CGROUP_DEBUG
static struct cgroup_subsys_state *
debug_css_alloc(struct cgroup_subsys_state *parent_css)
Expand Down

0 comments on commit 1cb650b

Please sign in to comment.