From: Mike Yuan Date: Thu, 9 Nov 2023 16:18:53 +0000 (+0800) Subject: cgroup-util: introduce cg_pidref_get_unit X-Git-Tag: v255-rc2~38^2~3 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2c302e89197a6ef4435c797be76aae94e094805e;p=thirdparty%2Fsystemd.git cgroup-util: introduce cg_pidref_get_unit --- diff --git a/src/basic/cgroup-util.c b/src/basic/cgroup-util.c index 4c825529042..18b16ecc0e5 100644 --- a/src/basic/cgroup-util.c +++ b/src/basic/cgroup-util.c @@ -1262,6 +1262,27 @@ int cg_pid_get_unit(pid_t pid, char **ret_unit) { return cg_path_get_unit(cgroup, ret_unit); } +int cg_pidref_get_unit(const PidRef *pidref, char **ret) { + _cleanup_free_ char *unit = NULL; + int r; + + assert(ret); + + if (!pidref_is_set(pidref)) + return -ESRCH; + + r = cg_pid_get_unit(pidref->pid, &unit); + if (r < 0) + return r; + + r = pidref_verify(pidref); + if (r < 0) + return r; + + *ret = TAKE_PTR(unit); + return 0; +} + /** * Skip session-*.scope, but require it to be there. */ diff --git a/src/basic/cgroup-util.h b/src/basic/cgroup-util.h index bfb38305207..6ab14c753d5 100644 --- a/src/basic/cgroup-util.h +++ b/src/basic/cgroup-util.h @@ -279,6 +279,7 @@ int cg_pid_get_path_shifted(pid_t pid, const char *cached_root, char **ret_cgrou int cg_pid_get_session(pid_t pid, char **ret_session); int cg_pid_get_owner_uid(pid_t pid, uid_t *ret_uid); int cg_pid_get_unit(pid_t pid, char **ret_unit); +int cg_pidref_get_unit(const PidRef *pidref, char **ret); int cg_pid_get_user_unit(pid_t pid, char **ret_unit); int cg_pid_get_machine_name(pid_t pid, char **ret_machine); int cg_pid_get_slice(pid_t pid, char **ret_slice);