summaryrefslogtreecommitdiffstats
path: root/libprocessgroup/cgroup_map.h
Commit message (Collapse)AuthorAgeFilesLines
* Fix IsUsable to check for each controller separatelySuren Baghdasaryan2019-06-261-2/+10
| | | | | | | | | | | | | | | CgroupController::IsUsable is using a global static variable to store the existence of the controller. That means the first controller existence check would affect all other controllers. Fix this by making this variable to be a member of CgroupController class so that each controller can check for its existence independently of other controllers. Fixes: aa1d54f0ccbb ("Remove ACgroupController_getFlags to fix API breakage") Bug: 136020193 Test: adb shell cat /proc/$pid/task/*/cgroup" prints "cpuset:/top-app" Test: for new launched activity process Change-Id: I4741a9126ea494122d5b2b1a0c4d7252bff6025c Signed-off-by: Suren Baghdasaryan <surenb@google.com>
* libprocessgroup: add flags to indicate when a controller failed to mountSuren Baghdasaryan2019-05-171-0/+1
| | | | | | | | | | | | | | | | Controllers listed in cgroups.json file might fail to mount if kernel is not configured to support them. We need a way to indicate whether a controller was successfully mounted and is usable to avoid logging errors and warnings when a controller that failed to mount is being used. Add flags bitmask to cgrouprc controller descriptor and use a bit to indicate that controller is successfully mounted. Modify cpusets_enabled() and schedboost_enabled() functions to use this bit and report the actual availability of the controller. Bug: 124080437 Test: libcutils_test with cpuset and schedtune controllers disabled Change-Id: I770cc39fe50465146e3205aacf77dc3c56923c5d Signed-off-by: Suren Baghdasaryan <surenb@google.com>
* libprocessgroup: use libcgrouprc to read cgroup.rcYifan Hong2019-04-021-29/+15
| | | | | | | | | | | | | | Use the LL-NDK library to read cgroup.rc. As a side-effect, the CgroupController class is changed to a wrapper of ACgroupController* from the library. The class itself essentially becomes the pointer, and can be trivially copied. Modify all client code for this change. Test: builds and boots Bug: 123664216 Change-Id: I635d9885db62e82f37421f6d20f59c84a6f4cbb2
* libprocessgroup: Move CgroupSetupCgroups() to libprocessgroup_setupYifan Hong2019-04-021-18/+0
| | | | | | | | | | | | | | Only init uses SetupCgroups. This functionality is moved from libprocessgroup to its own library, and only init links to it. Also, merge CgroupSetupCgroups() with CgroupMap::SetupCgroups() because the former is just an alias of the latter, and CgroupMap does not belong to libcgrouprc_setup. Test: boots Bug: 123664216 Change-Id: I941dc0c415e2b22ae663d43e30dc7a464687325e
* libprocessgroup: restrict SetupCgroups to one-time usage and only by initSuren Baghdasaryan2019-03-281-2/+0
| | | | | | | | | | | | | | SetupCgroups is called by init process during early-init stage and is not supposed to be called again by anyone else. Ensure that the caller is the init process, make sure cgroup.rc file is written only one time, keep the file descriptor to cgroup.rc file open by the init process to ensure all its further mappings stay valid even if the file is deleted. Bug: 124774415 Test: build, run, verify no errors or warning in the logcat Change-Id: Ib8822cf0112db7744e28d442182d54dcf06f46f2 Signed-off-by: Suren Baghdasaryan <surenb@google.com>
* Set cg_file_data_ to null when initialization failedWei Wang2019-03-081-1/+1
| | | | | | | | | Cannot really do calls if initialization failed. Also fix LOG usage. But: 124774415 Test: Build Change-Id: Ifd7db90cfee51ba5830e1d4db8f8d19b5bc9feba
* libprocessgroup: Add support for task profilesSuren Baghdasaryan2019-02-031-0/+96
Abstract usage of cgroups into task profiles that allows for changes in cgroup hierarchy and version without affecting framework codebase. Rework current processgroup and sched_policy API function implementations to use task profiles instead of hardcoded paths and attributes. Mount cgroups using information from cgroups.json rather than from init.rc Exempt-From-Owner-Approval: already approved in internal master Bug: 111307099 Test: builds, boots Change-Id: If5532d6dc570add825cebd5b5148e00c7d688e32 Merged-In: If5532d6dc570add825cebd5b5148e00c7d688e32 Signed-off-by: Suren Baghdasaryan <surenb@google.com>