]> git.baikalelectronics.ru Git - kernel.git/commit
cgroup: implement generic child / descendant walk macros
authorTejun Heo <tj@kernel.org>
Fri, 9 Nov 2012 17:12:29 +0000 (09:12 -0800)
committerTejun Heo <tj@kernel.org>
Fri, 9 Nov 2012 17:12:29 +0000 (09:12 -0800)
commit0c3f73aee5229cc5c9dcb081aa5c0e417c0f5b67
treef43657afb59dd12fe1eca329acc6caf885507727
parentff40c82a7eb39405b9d2aedcbe15962261aae179
cgroup: implement generic child / descendant walk macros

Currently, cgroup doesn't provide any generic helper for walking a
given cgroup's children or descendants.  This patch adds the following
three macros.

* cgroup_for_each_child() - walk immediate children of a cgroup.

* cgroup_for_each_descendant_pre() - visit all descendants of a cgroup
  in pre-order tree traversal.

* cgroup_for_each_descendant_post() - visit all descendants of a
  cgroup in post-order tree traversal.

All three only require the user to hold RCU read lock during
traversal.  Verifying that each iterated cgroup is online is the
responsibility of the user.  When used with proper synchronization,
cgroup_for_each_descendant_pre() can be used to propagate state
updates to descendants in reliable way.  See comments for details.

v2: s/config/state/ in commit message and comments per Michal.  More
    documentation on synchronization rules.

Signed-off-by: Tejun Heo <tj@kernel.org>
Reviewed-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujisu.com>
Reviewed-by: Michal Hocko <mhocko@suse.cz>
Acked-by: Li Zefan <lizefan@huawei.com>
include/linux/cgroup.h
kernel/cgroup.c