我们知道Android起来之后cgroup的各个子系统的文件夹都放在dev目录下,例如:
/dev/memcg/
/dev/cpuctrl/
/dev/cpuset/
/dev/acct/
/dev/blkio/
以上这些文件夹都是在初始化时候在init.rc中进行mount的,代码目录位于/system/core/rootdir/init.rc
其mount最后通过syscall进入kernel完成mount操作具体调用流程如下:
sys_mount(fs/namespace.c)
-->do_mount(kernel_dev, dir_name, kernel_type, flags, (void *)data_pate)
-->do_new_mount (&path, type_page, flags, mnt_flags,dev_name, data_page)
--> vfs_kern_mount(type, flags, name, data)
--> mount_fs(type, flags, name, data)
--> type->mount(type, flags, name, data)
--> cgroup_mount(fs_type, flags, unused_dev_name, data)