cgroup-util: add cg_pidref_get_path() helper and use it

This commit is contained in:
Lennart Poettering
2023-10-05 13:26:25 +02:00
parent 9482d34fb6
commit a906224288
3 changed files with 24 additions and 4 deletions
+22
View File
@@ -813,6 +813,28 @@ int cg_pid_get_path(const char *controller, pid_t pid, char **ret_path) {
}
}
int cg_pidref_get_path(const char *controller, PidRef *pidref, char **ret_path) {
_cleanup_free_ char *path = NULL;
int r;
assert(ret_path);
if (!pidref_is_set(pidref))
return -ESRCH;
r = cg_pid_get_path(controller, pidref->pid, &path);
if (r < 0)
return r;
/* Before we return the path, make sure the procfs entry for this pid still matches the pidref */
r = pidref_verify(pidref);
if (r < 0)
return r;
*ret_path = TAKE_PTR(path);
return 0;
}
int cg_install_release_agent(const char *controller, const char *agent) {
_cleanup_free_ char *fs = NULL, *contents = NULL;
const char *sc;
+1
View File
@@ -204,6 +204,7 @@ int cg_get_path(const char *controller, const char *path, const char *suffix, ch
int cg_get_path_and_check(const char *controller, const char *path, const char *suffix, char **fs);
int cg_pid_get_path(const char *controller, pid_t pid, char **path);
int cg_pidref_get_path(const char *controller, PidRef *pidref, char **path);
int cg_rmdir(const char *controller, const char *path);