From fcb8666eed813bc3ddfd080f0dfb7ffdb1011787 Mon Sep 17 00:00:00 2001 From: "T.J. Mercier" Date: Thu, 1 Aug 2024 20:52:30 +0000 Subject: [PATCH] libprocessgroup: Rename CgroupController -> CgroupControllerWrapper So that the name is not overloaded with libcgrouprc_format's CgroupController, which can be confusing. Bug: 349105928 Test: m Change-Id: I39df9814c500de68fd20139e661363ba51ea3543 --- libprocessgroup/cgroup_map.cpp | 34 +++++++++++++------------- libprocessgroup/cgroup_map.h | 8 +++--- libprocessgroup/processgroup.cpp | 2 +- libprocessgroup/task_profiles.cpp | 6 ++--- libprocessgroup/task_profiles.h | 18 +++++++------- libprocessgroup/task_profiles_test.cpp | 4 +-- 6 files changed, 36 insertions(+), 36 deletions(-) diff --git a/libprocessgroup/cgroup_map.cpp b/libprocessgroup/cgroup_map.cpp index 52b5afe5e..fb01cfda9 100644 --- a/libprocessgroup/cgroup_map.cpp +++ b/libprocessgroup/cgroup_map.cpp @@ -38,26 +38,26 @@ static constexpr const char* CGROUP_PROCS_FILE = "/cgroup.procs"; static constexpr const char* CGROUP_TASKS_FILE = "/tasks"; static constexpr const char* CGROUP_TASKS_FILE_V2 = "/cgroup.threads"; -uint32_t CgroupController::version() const { +uint32_t CgroupControllerWrapper::version() const { CHECK(HasValue()); return ACgroupController_getVersion(controller_); } -const char* CgroupController::name() const { +const char* CgroupControllerWrapper::name() const { CHECK(HasValue()); return ACgroupController_getName(controller_); } -const char* CgroupController::path() const { +const char* CgroupControllerWrapper::path() const { CHECK(HasValue()); return ACgroupController_getPath(controller_); } -bool CgroupController::HasValue() const { +bool CgroupControllerWrapper::HasValue() const { return controller_ != nullptr; } -bool CgroupController::IsUsable() { +bool CgroupControllerWrapper::IsUsable() { if (!HasValue()) return false; if (state_ == UNKNOWN) { @@ -72,7 +72,7 @@ bool CgroupController::IsUsable() { return state_ == USABLE; } -std::string CgroupController::GetTasksFilePath(const std::string& rel_path) const { +std::string CgroupControllerWrapper::GetTasksFilePath(const std::string& rel_path) const { std::string tasks_path = path(); if (!rel_path.empty()) { @@ -81,8 +81,8 @@ std::string CgroupController::GetTasksFilePath(const std::string& rel_path) cons return (version() == 1) ? tasks_path + CGROUP_TASKS_FILE : tasks_path + CGROUP_TASKS_FILE_V2; } -std::string CgroupController::GetProcsFilePath(const std::string& rel_path, uid_t uid, - pid_t pid) const { +std::string CgroupControllerWrapper::GetProcsFilePath(const std::string& rel_path, uid_t uid, + pid_t pid) const { std::string proc_path(path()); proc_path.append("/").append(rel_path); proc_path = regex_replace(proc_path, std::regex(""), std::to_string(uid)); @@ -91,7 +91,7 @@ std::string CgroupController::GetProcsFilePath(const std::string& rel_path, uid_ return proc_path.append(CGROUP_PROCS_FILE); } -bool CgroupController::GetTaskGroup(pid_t tid, std::string* group) const { +bool CgroupControllerWrapper::GetTaskGroup(pid_t tid, std::string* group) const { std::string file_name = StringPrintf("/proc/%d/cgroup", tid); std::string content; if (!android::base::ReadFileToString(file_name, &content)) { @@ -175,40 +175,40 @@ void CgroupMap::Print() const { } } -CgroupController CgroupMap::FindController(const std::string& name) const { +CgroupControllerWrapper CgroupMap::FindController(const std::string& name) const { if (!loaded_) { LOG(ERROR) << "CgroupMap::FindController called for [" << getpid() << "] failed, RC file was not initialized properly"; - return CgroupController(nullptr); + return CgroupControllerWrapper(nullptr); } auto controller_count = ACgroupFile_getControllerCount(); for (uint32_t i = 0; i < controller_count; ++i) { const ACgroupController* controller = ACgroupFile_getController(i); if (name == ACgroupController_getName(controller)) { - return CgroupController(controller); + return CgroupControllerWrapper(controller); } } - return CgroupController(nullptr); + return CgroupControllerWrapper(nullptr); } -CgroupController CgroupMap::FindControllerByPath(const std::string& path) const { +CgroupControllerWrapper CgroupMap::FindControllerByPath(const std::string& path) const { if (!loaded_) { LOG(ERROR) << "CgroupMap::FindControllerByPath called for [" << getpid() << "] failed, RC file was not initialized properly"; - return CgroupController(nullptr); + return CgroupControllerWrapper(nullptr); } auto controller_count = ACgroupFile_getControllerCount(); for (uint32_t i = 0; i < controller_count; ++i) { const ACgroupController* controller = ACgroupFile_getController(i); if (StartsWith(path, ACgroupController_getPath(controller))) { - return CgroupController(controller); + return CgroupControllerWrapper(controller); } } - return CgroupController(nullptr); + return CgroupControllerWrapper(nullptr); } int CgroupMap::ActivateControllers(const std::string& path) const { diff --git a/libprocessgroup/cgroup_map.h b/libprocessgroup/cgroup_map.h index 31925d5d7..ec3bd7870 100644 --- a/libprocessgroup/cgroup_map.h +++ b/libprocessgroup/cgroup_map.h @@ -23,10 +23,10 @@ #include // Convenient wrapper of an ACgroupController pointer. -class CgroupController { +class CgroupControllerWrapper { public: // Does not own controller - explicit CgroupController(const ACgroupController* controller) + explicit CgroupControllerWrapper(const ACgroupController* controller) : controller_(controller) {} uint32_t version() const; @@ -57,8 +57,8 @@ class CgroupMap { static bool SetupCgroups(); static CgroupMap& GetInstance(); - CgroupController FindController(const std::string& name) const; - CgroupController FindControllerByPath(const std::string& path) const; + CgroupControllerWrapper FindController(const std::string& name) const; + CgroupControllerWrapper FindControllerByPath(const std::string& path) const; int ActivateControllers(const std::string& path) const; private: diff --git a/libprocessgroup/processgroup.cpp b/libprocessgroup/processgroup.cpp index 387c104ff..83a2258bf 100644 --- a/libprocessgroup/processgroup.cpp +++ b/libprocessgroup/processgroup.cpp @@ -94,7 +94,7 @@ static bool CgroupKillAvailable() { } static bool CgroupGetMemcgAppsPath(std::string* path) { - CgroupController controller = CgroupMap::GetInstance().FindController("memory"); + CgroupControllerWrapper controller = CgroupMap::GetInstance().FindController("memory"); if (!controller.HasValue()) { return false; diff --git a/libprocessgroup/task_profiles.cpp b/libprocessgroup/task_profiles.cpp index 48705481c..67ecc1d50 100644 --- a/libprocessgroup/task_profiles.cpp +++ b/libprocessgroup/task_profiles.cpp @@ -123,8 +123,8 @@ const std::string& ProfileAttribute::file_name() const { return file_name_; } -void ProfileAttribute::Reset(const CgroupController& controller, const std::string& file_name, - const std::string& file_v2_name) { +void ProfileAttribute::Reset(const CgroupControllerWrapper& controller, + const std::string& file_name, const std::string& file_v2_name) { controller_ = controller; file_name_ = file_name; file_v2_name_ = file_v2_name; @@ -333,7 +333,7 @@ bool SetAttributeAction::IsValidForTask(pid_t tid) const { return optional_; } -SetCgroupAction::SetCgroupAction(const CgroupController& c, const std::string& p) +SetCgroupAction::SetCgroupAction(const CgroupControllerWrapper& c, const std::string& p) : controller_(c), path_(p) { FdCacheHelper::Init(controller_.GetTasksFilePath(path_), fd_[ProfileAction::RCT_TASK]); // uid and pid don't matter because IsAppDependentPath ensures the path doesn't use them diff --git a/libprocessgroup/task_profiles.h b/libprocessgroup/task_profiles.h index 184e9e35f..abb3ca5c3 100644 --- a/libprocessgroup/task_profiles.h +++ b/libprocessgroup/task_profiles.h @@ -32,9 +32,9 @@ class IProfileAttribute { public: virtual ~IProfileAttribute() = 0; - virtual void Reset(const CgroupController& controller, const std::string& file_name, + virtual void Reset(const CgroupControllerWrapper& controller, const std::string& file_name, const std::string& file_v2_name) = 0; - virtual const CgroupController* controller() const = 0; + virtual const CgroupControllerWrapper* controller() const = 0; virtual const std::string& file_name() const = 0; virtual bool GetPathForProcess(uid_t uid, pid_t pid, std::string* path) const = 0; virtual bool GetPathForTask(pid_t tid, std::string* path) const = 0; @@ -46,14 +46,14 @@ class ProfileAttribute : public IProfileAttribute { // Cgroup attributes may have different names in the v1 and v2 hierarchies. If `file_v2_name` is // not empty, `file_name` is the name for the v1 hierarchy and `file_v2_name` is the name for // the v2 hierarchy. If `file_v2_name` is empty, `file_name` is used for both hierarchies. - ProfileAttribute(const CgroupController& controller, const std::string& file_name, + ProfileAttribute(const CgroupControllerWrapper& controller, const std::string& file_name, const std::string& file_v2_name) : controller_(controller), file_name_(file_name), file_v2_name_(file_v2_name) {} ~ProfileAttribute() = default; - const CgroupController* controller() const override { return &controller_; } + const CgroupControllerWrapper* controller() const override { return &controller_; } const std::string& file_name() const override; - void Reset(const CgroupController& controller, const std::string& file_name, + void Reset(const CgroupControllerWrapper& controller, const std::string& file_name, const std::string& file_v2_name) override; bool GetPathForProcess(uid_t uid, pid_t pid, std::string* path) const override; @@ -61,7 +61,7 @@ class ProfileAttribute : public IProfileAttribute { bool GetPathForUID(uid_t uid, std::string* path) const override; private: - CgroupController controller_; + CgroupControllerWrapper controller_; std::string file_name_; std::string file_v2_name_; }; @@ -142,7 +142,7 @@ class SetAttributeAction : public ProfileAction { // Set cgroup profile element class SetCgroupAction : public ProfileAction { public: - SetCgroupAction(const CgroupController& c, const std::string& p); + SetCgroupAction(const CgroupControllerWrapper& c, const std::string& p); const char* Name() const override { return "SetCgroup"; } bool ExecuteForProcess(uid_t uid, pid_t pid) const override; @@ -152,10 +152,10 @@ class SetCgroupAction : public ProfileAction { bool IsValidForProcess(uid_t uid, pid_t pid) const override; bool IsValidForTask(pid_t tid) const override; - const CgroupController* controller() const { return &controller_; } + const CgroupControllerWrapper* controller() const { return &controller_; } private: - CgroupController controller_; + CgroupControllerWrapper controller_; std::string path_; android::base::unique_fd fd_[ProfileAction::RCT_COUNT]; mutable std::mutex fd_mutex_; diff --git a/libprocessgroup/task_profiles_test.cpp b/libprocessgroup/task_profiles_test.cpp index d19da2b54..dff6d677e 100644 --- a/libprocessgroup/task_profiles_test.cpp +++ b/libprocessgroup/task_profiles_test.cpp @@ -102,10 +102,10 @@ class ProfileAttributeMock : public IProfileAttribute { public: ProfileAttributeMock(const std::string& file_name) : file_name_(file_name) {} ~ProfileAttributeMock() override = default; - void Reset(const CgroupController&, const std::string&, const std::string&) override { + void Reset(const CgroupControllerWrapper&, const std::string&, const std::string&) override { CHECK(false); } - const CgroupController* controller() const override { + const CgroupControllerWrapper* controller() const override { CHECK(false); return {}; }