This is an automated email from the ASF dual-hosted git repository.
bmahler pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mesos.git
The following commit(s) were added to refs/heads/master by this push:
new 4fc0d8900 [cgroups2] Adds cgroups2::controllers::enabled().
4fc0d8900 is described below
commit 4fc0d890041573f130315eef3ef48795eef7e5cb
Author: Devin Leamy <[email protected]>
AuthorDate: Wed Mar 13 14:19:25 2024 -0400
[cgroups2] Adds cgroups2::controllers::enabled().
This provides access to cgroup.subtree_control which indicates
which controllers are enabled on the cgroup.
This closes #510
---
src/linux/cgroups2.cpp | 15 +++++++++++++++
src/linux/cgroups2.hpp | 4 ++++
2 files changed, 19 insertions(+)
diff --git a/src/linux/cgroups2.cpp b/src/linux/cgroups2.cpp
index f37a9ba81..c63ff5824 100644
--- a/src/linux/cgroups2.cpp
+++ b/src/linux/cgroups2.cpp
@@ -278,6 +278,21 @@ Try<Nothing> enable(const string& cgroup, const
vector<string>& controllers)
stringify(control));
}
+
+Try<set<string>> enabled(const string& cgroup)
+{
+ Try<string> contents =
+ cgroups2::read(cgroup, cgroups2::control::SUBTREE_CONTROLLERS);
+ if (contents.isError()) {
+ return Error("Failed to read 'cgroup.subtree_control' in '" + cgroup + "'"
+ ": " + contents.error());
+ }
+
+ using State = control::subtree_control::State;
+ State control = State::parse(*contents);
+ return control.enabled();
+}
+
} // namespace controllers {
} // namespace cgroups2 {
diff --git a/src/linux/cgroups2.hpp b/src/linux/cgroups2.hpp
index 91b605149..c55cd1e12 100644
--- a/src/linux/cgroups2.hpp
+++ b/src/linux/cgroups2.hpp
@@ -63,6 +63,10 @@ Try<Nothing> enable(
const std::string& cgroup,
const std::vector<std::string>& controllers);
+
+// Get all the controllers that are enabled for a cgroup.
+Try<std::set<std::string>> enabled(const std::string& cgroup);
+
} // namespace controllers {
} // namespace cgroups2 {