• T
    cgroup: implement cgroup_add_cftypes() and friends · 8e3f6541
    Tejun Heo 提交于
    Currently, cgroup directories are populated by subsys->populate()
    callback explicitly creating files on each cgroup creation.  This
    level of flexibility isn't needed or desirable.  It provides largely
    unused flexibility which call for abuses while severely limiting what
    the core layer can do through the lack of structure and conventions.
    
    Per each cgroup file type, the only distinction that cgroup users is
    making is whether a cgroup is root or not, which can easily be
    expressed with flags.
    
    This patch introduces cgroup_add_cftypes().  These deal with cftypes
    instead of individual files - controllers indicate that certain types
    of files exist for certain subsystem.  Newly added CFTYPE_*_ON_ROOT
    flags indicate whether a cftype should be excluded or created only on
    the root cgroup.
    
    cgroup_add_cftypes() can be called any time whether the target
    subsystem is currently attached or not.  cgroup core will create files
    on the existing cgroups as necessary.
    
    Also, cgroup_subsys->base_cftypes is added to ease registration of the
    base files for the subsystem.  If non-NULL on subsys init, the cftypes
    pointed to by ->base_cftypes are automatically registered on subsys
    init / load.
    
    Further patches will convert the existing users and remove the file
    based interface.  Note that this interface allows dynamic addition of
    files to an active controller.  This will be used for sub-controller
    modularity and unified hierarchy in the longer term.
    
    This patch implements the new mechanism but doesn't apply it to any
    user.
    
    v2: replaced DECLARE_CGROUP_CFTYPES[_COND]() with
        cgroup_subsys->base_cftypes, which works better for cgroup_subsys
        which is loaded as module.
    Signed-off-by: NTejun Heo <tj@kernel.org>
    Acked-by: NLi Zefan <lizf@cn.fujitsu.com>
    8e3f6541
cgroup.h 19.6 KB