From b2dcfd8e11977d4369560b8b4de81b947b0e963e Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 12 Dec 2023 11:02:59 +0100 Subject: [PATCH] cgroup-setup: add fd-based version of cg_attach() --- src/shared/cgroup-setup.c | 14 ++++++++++++++ src/shared/cgroup-setup.h | 1 + 2 files changed, 15 insertions(+) diff --git a/src/shared/cgroup-setup.c b/src/shared/cgroup-setup.c index d9cca6ced4..f82af4cf43 100644 --- a/src/shared/cgroup-setup.c +++ b/src/shared/cgroup-setup.c @@ -384,6 +384,20 @@ int cg_attach(const char *controller, const char *path, pid_t pid) { return 0; } +int cg_fd_attach(int fd, pid_t pid) { + char c[DECIMAL_STR_MAX(pid_t) + 2]; + + assert(fd >= 0); + assert(pid >= 0); + + if (pid == 0) + pid = getpid_cached(); + + xsprintf(c, PID_FMT "\n", pid); + + return write_string_file_at(fd, "cgroup.procs", c, WRITE_STRING_FILE_DISABLE_BUFFER); +} + int cg_attach_fallback(const char *controller, const char *path, pid_t pid) { int r; diff --git a/src/shared/cgroup-setup.h b/src/shared/cgroup-setup.h index c35884ee4d..283ab6757c 100644 --- a/src/shared/cgroup-setup.h +++ b/src/shared/cgroup-setup.h @@ -21,6 +21,7 @@ int cg_trim(const char *controller, const char *path, bool delete_root); int cg_create(const char *controller, const char *path); int cg_attach(const char *controller, const char *path, pid_t pid); +int cg_fd_attach(int fd, pid_t pid); int cg_attach_fallback(const char *controller, const char *path, pid_t pid); int cg_create_and_attach(const char *controller, const char *path, pid_t pid);