diff options
author | Tejun Heo <tj@kernel.org> | 2014-04-23 11:13:15 -0400 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2014-04-23 11:13:15 -0400 |
commit | 0f0a2b4fa6210147131082999f1f16d7fb79abf8 (patch) | |
tree | b1528915143e2d106590f798384f446bca1e5d17 /include/linux/cgroup.h | |
parent | 3b281afbc3a06cd69c54e6db1a04a8e73997723f (diff) | |
download | linux-0f0a2b4fa6210147131082999f1f16d7fb79abf8.tar.gz linux-0f0a2b4fa6210147131082999f1f16d7fb79abf8.tar.bz2 linux-0f0a2b4fa6210147131082999f1f16d7fb79abf8.zip |
cgroup: reorganize css_task_iter
This patch reorganizes css_task_iter so that adding effective css
support is easier.
* s/->cset_link/->cset_pos/ and s/->task/->task_pos/ for consistency
* ->origin_css is used to determine whether the iteration reached the
last css_set. Replace it with explicit ->cset_head so that
css_advance_task_iter() doesn't have to know the termination
condition directly.
* css_task_iter_next() currently assumes that it's walking list of
cgrp_cset_link and reaches into the current cset through the current
link to determine the termination conditions for task walking. As
this won't always be true for effective css walking, add
->tasks_head and ->mg_tasks_head and use them to control task
walking so that css_task_iter_next() doesn't have to know how
css_sets are being walked.
This patch doesn't make any behavior changes. The iteration logic
stays unchanged after the patch.
Signed-off-by: Tejun Heo <tj@kernel.org>
Acked-by: Li Zefan <lizefan@huawei.com>
Diffstat (limited to 'include/linux/cgroup.h')
-rw-r--r-- | include/linux/cgroup.h | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h index 33a0043ef454..bee390586120 100644 --- a/include/linux/cgroup.h +++ b/include/linux/cgroup.h @@ -842,9 +842,12 @@ css_next_descendant_post(struct cgroup_subsys_state *pos, /* A css_task_iter should be treated as an opaque object */ struct css_task_iter { - struct cgroup_subsys_state *origin_css; - struct list_head *cset_link; - struct list_head *task; + struct list_head *cset_pos; + struct list_head *cset_head; + + struct list_head *task_pos; + struct list_head *tasks_head; + struct list_head *mg_tasks_head; }; void css_task_iter_start(struct cgroup_subsys_state *css, |