Commit d515876e authored by Tejun Heo's avatar Tejun Heo

cgroup: relocate cgroup_advance_iter()

For some reason, cgroup_advance_iter() is standing lonely all away
from its iter comrades.  Relocate it.

This is cosmetic.
Signed-off-by: default avatarTejun Heo <tj@kernel.org>
Acked-by: default avatarLi Zefan <lizefan@huawei.com>
parent 492eb21b
...@@ -2981,30 +2981,6 @@ int cgroup_task_count(const struct cgroup *cgrp) ...@@ -2981,30 +2981,6 @@ int cgroup_task_count(const struct cgroup *cgrp)
return count; return count;
} }
/*
* Advance a list_head iterator. The iterator should be positioned at
* the start of a css_set
*/
static void cgroup_advance_iter(struct cgroup *cgrp, struct cgroup_iter *it)
{
struct list_head *l = it->cset_link;
struct cgrp_cset_link *link;
struct css_set *cset;
/* Advance to the next non-empty css_set */
do {
l = l->next;
if (l == &cgrp->cset_links) {
it->cset_link = NULL;
return;
}
link = list_entry(l, struct cgrp_cset_link, cset_link);
cset = link->cset;
} while (list_empty(&cset->tasks));
it->cset_link = l;
it->task = cset->tasks.next;
}
/* /*
* To reduce the fork() overhead for systems that are not actually * To reduce the fork() overhead for systems that are not actually
* using their cgroups capability, we don't maintain the lists running * using their cgroups capability, we don't maintain the lists running
...@@ -3223,6 +3199,30 @@ css_next_descendant_post(struct cgroup_subsys_state *pos, ...@@ -3223,6 +3199,30 @@ css_next_descendant_post(struct cgroup_subsys_state *pos,
} }
EXPORT_SYMBOL_GPL(css_next_descendant_post); EXPORT_SYMBOL_GPL(css_next_descendant_post);
/*
* Advance a list_head iterator. The iterator should be positioned at
* the start of a css_set
*/
static void cgroup_advance_iter(struct cgroup *cgrp, struct cgroup_iter *it)
{
struct list_head *l = it->cset_link;
struct cgrp_cset_link *link;
struct css_set *cset;
/* Advance to the next non-empty css_set */
do {
l = l->next;
if (l == &cgrp->cset_links) {
it->cset_link = NULL;
return;
}
link = list_entry(l, struct cgrp_cset_link, cset_link);
cset = link->cset;
} while (list_empty(&cset->tasks));
it->cset_link = l;
it->task = cset->tasks.next;
}
void cgroup_iter_start(struct cgroup *cgrp, struct cgroup_iter *it) void cgroup_iter_start(struct cgroup *cgrp, struct cgroup_iter *it)
__acquires(css_set_lock) __acquires(css_set_lock)
{ {
......
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