diff options
author | Tom Gundersen <teg@jklm.no> | 2015-09-01 19:48:04 +0200 |
---|---|---|
committer | Tom Gundersen <teg@jklm.no> | 2015-09-01 19:48:04 +0200 |
commit | fc94c3260549c12892461be031c4b9dc122ca1ef (patch) | |
tree | 3b9bf7eccf1690daa57da5419d29554175605c20 /src/core/cgroup.c | |
parent | 332929623af07716530fb0d0a30e792b564ea486 (diff) | |
parent | d06673212e7672da44d5147d1d393278d9b1b478 (diff) |
Merge pull request #1111 from poettering/more-cgroup-fixes
More cgroup fixes
Diffstat (limited to 'src/core/cgroup.c')
-rw-r--r-- | src/core/cgroup.c | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/src/core/cgroup.c b/src/core/cgroup.c index c26807ba2b..e92d2cc850 100644 --- a/src/core/cgroup.c +++ b/src/core/cgroup.c @@ -1005,6 +1005,7 @@ Unit* manager_get_unit_by_cgroup(Manager *m, const char *cgroup) { Unit *manager_get_unit_by_pid(Manager *m, pid_t pid) { _cleanup_free_ char *cgroup = NULL; + Unit *u; int r; assert(m); @@ -1012,6 +1013,14 @@ Unit *manager_get_unit_by_pid(Manager *m, pid_t pid) { if (pid <= 1) return NULL; + u = hashmap_get(m->watch_pids1, LONG_TO_PTR(pid)); + if (u) + return u; + + u = hashmap_get(m->watch_pids2, LONG_TO_PTR(pid)); + if (u) + return u; + r = cg_pid_get_path(SYSTEMD_CGROUP_CONTROLLER, pid, &cgroup); if (r < 0) return NULL; @@ -1030,7 +1039,7 @@ int manager_notify_cgroup_empty(Manager *m, const char *cgroup) { if (!u) return 0; - r = cg_is_empty_recursive(SYSTEMD_CGROUP_CONTROLLER, u->cgroup_path, true); + r = cg_is_empty_recursive(SYSTEMD_CGROUP_CONTROLLER, u->cgroup_path); if (r <= 0) return r; @@ -1124,6 +1133,18 @@ int unit_reset_cpu_usage(Unit *u) { return 0; } +bool unit_cgroup_delegate(Unit *u) { + CGroupContext *c; + + assert(u); + + c = unit_get_cgroup_context(u); + if (!c) + return false; + + return c->delegate; +} + static const char* const cgroup_device_policy_table[_CGROUP_DEVICE_POLICY_MAX] = { [CGROUP_AUTO] = "auto", [CGROUP_CLOSED] = "closed", |