Loading libprocessgroup/cgroup_map.cpp +16 −4 Original line number Diff line number Diff line Loading @@ -71,8 +71,13 @@ bool CgroupController::IsUsable() { if (!HasValue()) return false; if (state_ == UNKNOWN) { if (ACgroupController_getFlags != nullptr) { uint32_t flags = ACgroupController_getFlags(controller_); state_ = (flags & CGROUPRC_CONTROLLER_FLAG_MOUNTED) != 0 ? USABLE : MISSING; } else { state_ = access(GetProcsFilePath("", 0, 0).c_str(), F_OK) == 0 ? USABLE : MISSING; } } return state_ == USABLE; } Loading Loading @@ -161,11 +166,18 @@ void CgroupMap::Print() const { auto controller_count = ACgroupFile_getControllerCount(); for (uint32_t i = 0; i < controller_count; ++i) { const ACgroupController* controller = ACgroupFile_getController(i); if (ACgroupController_getFlags != nullptr) { LOG(INFO) << "\t" << ACgroupController_getName(controller) << " ver " << ACgroupController_getVersion(controller) << " path " << ACgroupController_getPath(controller) << " flags " << ACgroupController_getFlags(controller); } else { LOG(INFO) << "\t" << ACgroupController_getName(controller) << " ver " << ACgroupController_getVersion(controller) << " path " << ACgroupController_getPath(controller); } } } CgroupController CgroupMap::FindController(const std::string& name) const { if (!loaded_) { Loading libprocessgroup/cgrouprc/cgroup_controller.cpp +5 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,11 @@ uint32_t ACgroupController_getVersion(const ACgroupController* controller) { return controller->version(); } uint32_t ACgroupController_getFlags(const ACgroupController* controller) { CHECK(controller != nullptr); return controller->flags(); } const char* ACgroupController_getName(const ACgroupController* controller) { CHECK(controller != nullptr); return controller->name(); Loading libprocessgroup/cgrouprc/include/android/cgrouprc.h +12 −1 Original line number Diff line number Diff line Loading @@ -66,10 +66,21 @@ __attribute__((warn_unused_result)) uint32_t ACgroupController_getVersion(const __INTRODUCED_IN(29); /** * Flag bitmask to be used when ACgroupController_getFlags can be exported * Flag bitmask used in ACgroupController_getFlags */ #define CGROUPRC_CONTROLLER_FLAG_MOUNTED 0x1 #if __ANDROID_API__ >= __ANDROID_API_R__ /** * Returns the flags bitmask of the given controller. * If the given controller is null, return 0. */ __attribute__((warn_unused_result, weak)) uint32_t ACgroupController_getFlags( const ACgroupController*) __INTRODUCED_IN(30); #endif /** * Returns the name of the given controller. * If the given controller is null, return nullptr. Loading libprocessgroup/cgrouprc/libcgrouprc.llndk.txt +7 −0 Original line number Diff line number Diff line Loading @@ -9,3 +9,10 @@ LIBCGROUPRC { # introduced=29 local: *; }; LIBCGROUPRC_30 { # introduced=30 global: ACgroupController_getFlags; local: *; }; Loading
libprocessgroup/cgroup_map.cpp +16 −4 Original line number Diff line number Diff line Loading @@ -71,8 +71,13 @@ bool CgroupController::IsUsable() { if (!HasValue()) return false; if (state_ == UNKNOWN) { if (ACgroupController_getFlags != nullptr) { uint32_t flags = ACgroupController_getFlags(controller_); state_ = (flags & CGROUPRC_CONTROLLER_FLAG_MOUNTED) != 0 ? USABLE : MISSING; } else { state_ = access(GetProcsFilePath("", 0, 0).c_str(), F_OK) == 0 ? USABLE : MISSING; } } return state_ == USABLE; } Loading Loading @@ -161,11 +166,18 @@ void CgroupMap::Print() const { auto controller_count = ACgroupFile_getControllerCount(); for (uint32_t i = 0; i < controller_count; ++i) { const ACgroupController* controller = ACgroupFile_getController(i); if (ACgroupController_getFlags != nullptr) { LOG(INFO) << "\t" << ACgroupController_getName(controller) << " ver " << ACgroupController_getVersion(controller) << " path " << ACgroupController_getPath(controller) << " flags " << ACgroupController_getFlags(controller); } else { LOG(INFO) << "\t" << ACgroupController_getName(controller) << " ver " << ACgroupController_getVersion(controller) << " path " << ACgroupController_getPath(controller); } } } CgroupController CgroupMap::FindController(const std::string& name) const { if (!loaded_) { Loading
libprocessgroup/cgrouprc/cgroup_controller.cpp +5 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,11 @@ uint32_t ACgroupController_getVersion(const ACgroupController* controller) { return controller->version(); } uint32_t ACgroupController_getFlags(const ACgroupController* controller) { CHECK(controller != nullptr); return controller->flags(); } const char* ACgroupController_getName(const ACgroupController* controller) { CHECK(controller != nullptr); return controller->name(); Loading
libprocessgroup/cgrouprc/include/android/cgrouprc.h +12 −1 Original line number Diff line number Diff line Loading @@ -66,10 +66,21 @@ __attribute__((warn_unused_result)) uint32_t ACgroupController_getVersion(const __INTRODUCED_IN(29); /** * Flag bitmask to be used when ACgroupController_getFlags can be exported * Flag bitmask used in ACgroupController_getFlags */ #define CGROUPRC_CONTROLLER_FLAG_MOUNTED 0x1 #if __ANDROID_API__ >= __ANDROID_API_R__ /** * Returns the flags bitmask of the given controller. * If the given controller is null, return 0. */ __attribute__((warn_unused_result, weak)) uint32_t ACgroupController_getFlags( const ACgroupController*) __INTRODUCED_IN(30); #endif /** * Returns the name of the given controller. * If the given controller is null, return nullptr. Loading
libprocessgroup/cgrouprc/libcgrouprc.llndk.txt +7 −0 Original line number Diff line number Diff line Loading @@ -9,3 +9,10 @@ LIBCGROUPRC { # introduced=29 local: *; }; LIBCGROUPRC_30 { # introduced=30 global: ACgroupController_getFlags; local: *; };