]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
cgroup-setup: add fd-based version of cg_attach()
authorLennart Poettering <lennart@poettering.net>
Tue, 12 Dec 2023 10:02:59 +0000 (11:02 +0100)
committerLennart Poettering <lennart@poettering.net>
Sat, 6 Apr 2024 14:08:23 +0000 (16:08 +0200)
src/shared/cgroup-setup.c
src/shared/cgroup-setup.h

index d9cca6ced41d74774ba9cfb11ea7d99d1a050283..f82af4cf43ec073b60ac2ce3ae8f381ae5a64565 100644 (file)
@@ -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;
 
index c35884ee4d67a321cc8b1f12f723c756b8f6c473..283ab6757c93649cf25bcbe38f8324461c7bd18e 100644 (file)
@@ -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);