[CRIU] [PATCH 3/3] libcriu: Add criu_add_cg_root() call
Pavel Emelyanov
xemul at parallels.com
Fri Aug 22 05:12:05 PDT 2014
Signed-off-by: Pavel Emelyanov <xemul at parallels.com>
---
diff --git a/lib/criu.c b/lib/criu.c
index 45006e2..c83c4d8 100644
--- a/lib/criu.c
+++ b/lib/criu.c
@@ -232,6 +232,46 @@ er:
return -ENOMEM;
}
+int criu_add_cg_root(char *ctrl, char *path)
+{
+ int nr;
+ CgroupRoot **a, *root;
+
+ root = malloc(sizeof(*root));
+ if (!root)
+ goto er;
+ cgroup_root__init(root);
+
+ if (ctrl) {
+ root->ctrl = strdup(ctrl);
+ if (!root->ctrl)
+ goto er_r;
+ }
+
+ root->path = strdup(path);
+ if (!root->path)
+ goto er_c;
+
+ nr = opts->n_cg_root + 1;
+ a = realloc(opts->cg_root, nr * sizeof(root));
+ if (!a)
+ goto er_p;
+
+ a[nr - 1] = root;
+ opts->cg_root = a;
+ opts->n_cg_root = nr;
+ return 0;
+
+er_p:
+ free(root->path);
+er_c:
+ if (root->ctrl)
+ free(root->ctrl);
+er_r:
+ free(root);
+er:
+ return -ENOMEM;
+}
int criu_add_veth_pair(char *in, char *out)
{
int nr;
diff --git a/lib/criu.h b/lib/criu.h
index 94c5979..18f911e 100644
--- a/lib/criu.h
+++ b/lib/criu.h
@@ -51,6 +51,7 @@ void criu_set_manage_cgroups(bool manage);
int criu_set_exec_cmd(int argc, char *argv[]);
int criu_add_ext_mount(char *key, char *val);
int criu_add_veth_pair(char *in, char *out);
+int criu_add_cg_root(char *ctrl, char *path);
/*
* The criu_notify_arg_t na argument is an opaque
More information about the CRIU
mailing list