Commit ca0abdee by Dwight Engen Committed by Stéphane Graber

implement cgmanager nrtasks

This op will be used on older kernels where container shutdown via reboot(2) is not implemented and we use the utmp watching code. Signed-off-by: 's avatarDwight Engen <dwight.engen@oracle.com> Acked-by: 's avatarSerge E. Hallyn <serge.hallyn@ubuntu.com>
parent 9dc56d32
...@@ -513,6 +513,27 @@ static const char *cgm_get_cgroup(void *hdata, const char *subsystem) ...@@ -513,6 +513,27 @@ static const char *cgm_get_cgroup(void *hdata, const char *subsystem)
return d->cgroup_path; return d->cgroup_path;
} }
static int cgm_get_nrtasks(void *hdata)
{
struct cgm_data *d = hdata;
int32_t *pids;
size_t pids_len;
if (!d || !d->cgroup_path)
return false;
if (cgmanager_get_tasks_sync(NULL, cgroup_manager, subsystems[0],
d->cgroup_path, &pids, &pids_len) != 0) {
NihError *nerr;
nerr = nih_error_get();
ERROR("call to cgmanager_get_tasks_sync failed: %s", nerr->message);
nih_free(nerr);
return -1;
}
nih_free(pids);
return pids_len;
}
static int cgm_get(const char *filename, char *value, size_t len, const char *name, const char *lxcpath) static int cgm_get(const char *filename, char *value, size_t len, const char *name, const char *lxcpath)
{ {
char *result, *controller, *key, *cgroup; char *result, *controller, *key, *cgroup;
...@@ -862,6 +883,6 @@ static struct cgroup_ops cgmanager_ops = { ...@@ -862,6 +883,6 @@ static struct cgroup_ops cgmanager_ops = {
.chown = cgm_chown, .chown = cgm_chown,
.attach = cgm_attach, .attach = cgm_attach,
.mount_cgroup = cgm_mount_cgroup, .mount_cgroup = cgm_mount_cgroup,
.nrtasks = NULL, .nrtasks = cgm_get_nrtasks,
}; };
#endif #endif
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment