#define CGROUP_CPU_QUOTA_PERIOD_USEC ((usec_t) 100 * USEC_PER_MSEC)
+// UNNEEDED by elogind
+#if 0
void cgroup_context_init(CGroupContext *c) {
assert(c);
cgroup_context_free_device_allow(c, c->device_allow);
}
-/// UNNEEDED by elogind
-#if 0
void cgroup_context_dump(CGroupContext *c, FILE* f, const char *prefix) {
CGroupBlockIODeviceBandwidth *b;
CGroupBlockIODeviceWeight *w;
}
}
}
-#endif // 0
CGroupMask cgroup_context_get_mask(CGroupContext *c) {
CGroupMask mask = 0;
return mask;
}
-/// UNNEEDED by elogind
-#if 0
CGroupMask unit_get_own_mask(Unit *u) {
CGroupContext *c;
r = cg_pid_get_path(ELOGIND_CGROUP_CONTROLLER, 0, &m->cgroup_root);
if (r < 0)
return log_error_errno(r, "Cannot determine cgroup we are running in: %m");
-
/// elogind does not support systemd scopes and slices
#if 0
/* Chop off the init scope, if we are already located in it */
* it everywhere. */
while ((e = endswith(m->cgroup_root, "/")))
*e = 0;
+ log_debug_elogind("Cgroup Controller \"%s\" -> root \"%s\"",
+ ELOGIND_CGROUP_CONTROLLER, m->cgroup_root);
/* 2. Show data */
r = cg_get_path(ELOGIND_CGROUP_CONTROLLER, m->cgroup_root, NULL, &path);
scope_path = strjoina(m->cgroup_root, "/" SPECIAL_INIT_SCOPE);
r = cg_create_and_attach(ELOGIND_CGROUP_CONTROLLER, scope_path, 0);
#else
- scope_path = strjoina(m->cgroup_root, "/elogind");
+ if (streq(m->cgroup_root, "/elogind"))
+ // root already is our cgroup
+ scope_path = strjoina(m->cgroup_root);
+ else
+ // we have to create our own group
+ scope_path = strjoina(m->cgroup_root, "/elogind");
r = cg_create_and_attach(ELOGIND_CGROUP_CONTROLLER, scope_path, 0);
#endif // 0
if (r < 0)
return log_error_errno(r, "Failed to create %s control group: %m", scope_path);
+ log_debug_elogind("Created control group \"%s\"", scope_path);
/* also, move all other userspace processes remaining
* in the root cgroup into that scope. */
- r = cg_migrate(ELOGIND_CGROUP_CONTROLLER, m->cgroup_root, ELOGIND_CGROUP_CONTROLLER, scope_path, false);
- if (r < 0)
- log_warning_errno(r, "Couldn't move remaining userspace processes, ignoring: %m");
+ if (!streq(m->cgroup_root, scope_path)) {
+ r = cg_migrate(ELOGIND_CGROUP_CONTROLLER, m->cgroup_root, ELOGIND_CGROUP_CONTROLLER, scope_path, false);
+ if (r < 0)
+ log_warning_errno(r, "Couldn't move remaining userspace processes, ignoring: %m");
+ }
/* 5. And pin it, so that it cannot be unmounted */
safe_close(m->pin_cgroupfs_fd);
return c->delegate;
}
-#endif // 0
static const char* const cgroup_device_policy_table[_CGROUP_DEVICE_POLICY_MAX] = {
[CGROUP_AUTO] = "auto",
};
DEFINE_STRING_TABLE_LOOKUP(cgroup_device_policy, CGroupDevicePolicy);
+#endif // 0