Loading libprocessgroup/include/processgroup/processgroup.h +2 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,8 @@ bool CgroupGetAttributePath(const std::string& attr_name, std::string* path); // Provides the path for an attribute in a specific process group // Returns false in case of error, true in case of success bool CgroupGetAttributePathForTask(const std::string& attr_name, pid_t tid, std::string* path); bool CgroupGetAttributePathForProcess(std::string_view attr_name, uid_t uid, pid_t pid, std::string &path); bool SetTaskProfiles(pid_t tid, const std::vector<std::string>& profiles, bool use_fd_cache = false); Loading libprocessgroup/processgroup.cpp +17 −0 Original line number Diff line number Diff line Loading @@ -154,6 +154,23 @@ bool CgroupGetAttributePathForTask(const std::string& attr_name, pid_t tid, std: return true; } bool CgroupGetAttributePathForProcess(std::string_view attr_name, uid_t uid, pid_t pid, std::string &path) { const TaskProfiles& tp = TaskProfiles::GetInstance(); const IProfileAttribute* attr = tp.GetAttribute(attr_name); if (attr == nullptr) { return false; } if (!attr->GetPathForProcess(uid, pid, &path)) { LOG(ERROR) << "Failed to find cgroup for uid " << uid << " pid " << pid; return false; } return true; } bool UsePerAppMemcg() { bool low_ram_device = GetBoolProperty("ro.config.low_ram", false); return GetBoolProperty("ro.config.per_app_memcg", low_ram_device); Loading libprocessgroup/profiles/task_profiles.json +5 −0 Original line number Diff line number Diff line Loading @@ -81,6 +81,11 @@ "Name": "FreezerState", "Controller": "freezer", "File": "cgroup.freeze" }, { "Name": "CgroupProcs", "Controller": "cgroup2", "File": "cgroup.procs" } ], Loading Loading
libprocessgroup/include/processgroup/processgroup.h +2 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,8 @@ bool CgroupGetAttributePath(const std::string& attr_name, std::string* path); // Provides the path for an attribute in a specific process group // Returns false in case of error, true in case of success bool CgroupGetAttributePathForTask(const std::string& attr_name, pid_t tid, std::string* path); bool CgroupGetAttributePathForProcess(std::string_view attr_name, uid_t uid, pid_t pid, std::string &path); bool SetTaskProfiles(pid_t tid, const std::vector<std::string>& profiles, bool use_fd_cache = false); Loading
libprocessgroup/processgroup.cpp +17 −0 Original line number Diff line number Diff line Loading @@ -154,6 +154,23 @@ bool CgroupGetAttributePathForTask(const std::string& attr_name, pid_t tid, std: return true; } bool CgroupGetAttributePathForProcess(std::string_view attr_name, uid_t uid, pid_t pid, std::string &path) { const TaskProfiles& tp = TaskProfiles::GetInstance(); const IProfileAttribute* attr = tp.GetAttribute(attr_name); if (attr == nullptr) { return false; } if (!attr->GetPathForProcess(uid, pid, &path)) { LOG(ERROR) << "Failed to find cgroup for uid " << uid << " pid " << pid; return false; } return true; } bool UsePerAppMemcg() { bool low_ram_device = GetBoolProperty("ro.config.low_ram", false); return GetBoolProperty("ro.config.per_app_memcg", low_ram_device); Loading
libprocessgroup/profiles/task_profiles.json +5 −0 Original line number Diff line number Diff line Loading @@ -81,6 +81,11 @@ "Name": "FreezerState", "Controller": "freezer", "File": "cgroup.freeze" }, { "Name": "CgroupProcs", "Controller": "cgroup2", "File": "cgroup.procs" } ], Loading