From: Lennart Poettering Date: Tue, 12 Dec 2023 10:02:59 +0000 (+0100) Subject: cgroup-setup: add fd-based version of cg_attach() X-Git-Tag: v256-rc1~283^2~15 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b2dcfd8e11977d4369560b8b4de81b947b0e963e;p=thirdparty%2Fsystemd.git cgroup-setup: add fd-based version of cg_attach() --- diff --git a/src/shared/cgroup-setup.c b/src/shared/cgroup-setup.c index d9cca6ced41..f82af4cf43e 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 c35884ee4d6..283ab6757c9 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);