• Tejun Heo's avatar
    cgroup: implement generic child / descendant walk macros · 574bd9f7
    Tejun Heo authored
    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: default avatarTejun Heo <tj@kernel.org>
    Reviewed-by: default avatarKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujisu.com>
    Reviewed-by: default avatarMichal Hocko <mhocko@suse.cz>
    Acked-by: default avatarLi Zefan <lizefan@huawei.com>
    574bd9f7
cgroup.c 146 KB