diff options
Diffstat (limited to 'test/util')
-rw-r--r-- | test/util/cgroup_util.cc | 13 | ||||
-rw-r--r-- | test/util/cgroup_util.h | 8 |
2 files changed, 21 insertions, 0 deletions
diff --git a/test/util/cgroup_util.cc b/test/util/cgroup_util.cc index 65d9c4986..d8d3fe471 100644 --- a/test/util/cgroup_util.cc +++ b/test/util/cgroup_util.cc @@ -17,6 +17,7 @@ #include <sys/syscall.h> #include <unistd.h> +#include "absl/strings/str_cat.h" #include "absl/strings/str_split.h" #include "test/util/fs_util.h" #include "test/util/mount_util.h" @@ -50,6 +51,18 @@ PosixErrorOr<int64_t> Cgroup::ReadIntegerControlFile( return val; } +PosixError Cgroup::WriteControlFile(absl::string_view name, + const std::string& value) const { + ASSIGN_OR_RETURN_ERRNO(FileDescriptor fd, Open(Relpath(name), O_WRONLY)); + RETURN_ERROR_IF_SYSCALL_FAIL(WriteFd(fd.get(), value.c_str(), value.size())); + return NoError(); +} + +PosixError Cgroup::WriteIntegerControlFile(absl::string_view name, + int64_t value) const { + return WriteControlFile(name, absl::StrCat(value)); +} + PosixErrorOr<absl::flat_hash_set<pid_t>> Cgroup::Procs() const { ASSIGN_OR_RETURN_ERRNO(std::string buf, ReadControlFile("cgroup.procs")); return ParsePIDList(buf); diff --git a/test/util/cgroup_util.h b/test/util/cgroup_util.h index b049559df..c6e4303e1 100644 --- a/test/util/cgroup_util.h +++ b/test/util/cgroup_util.h @@ -45,6 +45,14 @@ class Cgroup { // to parse it as an integer. PosixErrorOr<int64_t> ReadIntegerControlFile(absl::string_view name) const; + // Writes a string to a cgroup control file. + PosixError WriteControlFile(absl::string_view name, + const std::string& value) const; + + // Writes an integer value to a cgroup control file. + PosixError WriteIntegerControlFile(absl::string_view name, + int64_t value) const; + // Returns the thread ids of the leaders of thread groups managed by this // cgroup. PosixErrorOr<absl::flat_hash_set<pid_t>> Procs() const; |