[CRIU] [PATCH] rpc: add constants for cgroups modes
Ruslan Kuprieiev
rkuprieiev at cloudlinux.com
Thu Aug 6 05:39:09 PDT 2015
Signed-off-by: Ruslan Kuprieiev <rkuprieiev at cloudlinux.com>
---
cr-service.c | 33 +++++++++++++++++++++++++++++++--
lib/criu.c | 6 +++---
lib/criu.h | 14 ++++++++++++--
protobuf/rpc.proto | 12 +++++++++++-
4 files changed, 57 insertions(+), 8 deletions(-)
diff --git a/cr-service.c b/cr-service.c
index 334681b..d892b18 100644
--- a/cr-service.c
+++ b/cr-service.c
@@ -401,8 +401,37 @@ static int setup_opts_from_req(int sk, CriuOpts *req)
opts.manage_cgroups = req->manage_cgroups ? CG_MODE_SOFT : CG_MODE_IGNORE;
/* Override the manage_cgroup if mode is set explicitly */
- if (req->has_manage_cgroups_mode)
- opts.manage_cgroups = req->manage_cgroups_mode;
+ if (req->has_manage_cgroups_mode) {
+ unsigned int mode;
+
+ switch (req->manage_cgroups_mode) {
+ case CRIU_CG_MODE__IGNORE:
+ mode = CG_MODE_IGNORE;
+ break;
+ case CRIU_CG_MODE__NONE:
+ mode = CG_MODE_NONE;
+ break;
+ case CRIU_CG_MODE__PROPS:
+ mode = CG_MODE_PROPS;
+ break;
+ case CRIU_CG_MODE__SOFT:
+ mode = CG_MODE_SOFT;
+ break;
+ case CRIU_CG_MODE__FULL:
+ mode = CG_MODE_FULL;
+ break;
+ case CRIU_CG_MODE__STRICT:
+ mode = CG_MODE_STRICT;
+ break;
+ case CRIU_CG_MODE__DEFAULT:
+ mode = CG_MODE_DEFAULT;
+ break;
+ default:
+ goto err;
+ }
+
+ opts.manage_cgroups = mode;
+ }
if (req->has_auto_ext_mnt)
opts.autodetect_ext_mounts = req->auto_ext_mnt;
diff --git a/lib/criu.c b/lib/criu.c
index 90f909f..3fac24e 100644
--- a/lib/criu.c
+++ b/lib/criu.c
@@ -375,13 +375,13 @@ void criu_set_manage_cgroups(bool manage)
criu_local_set_manage_cgroups(global_opts, manage);
}
-void criu_local_set_manage_cgroups_mode(criu_opts *opts, unsigned int mode)
+void criu_local_set_manage_cgroups_mode(criu_opts *opts, enum criu_cg_mode mode)
{
opts->rpc->has_manage_cgroups_mode = true;
- opts->rpc->manage_cgroups_mode = mode;
+ opts->rpc->manage_cgroups_mode = (CriuCgMode)mode;
}
-void criu_set_manage_cgroups_mode(unsigned int mode)
+void criu_set_manage_cgroups_mode(enum criu_cg_mode mode)
{
criu_local_set_manage_cgroups_mode(global_opts, mode);
}
diff --git a/lib/criu.h b/lib/criu.h
index 169b9e3..c22bad3 100644
--- a/lib/criu.h
+++ b/lib/criu.h
@@ -31,6 +31,16 @@ enum criu_service_comm {
CRIU_COMM_BIN
};
+enum criu_cg_mode {
+ CRIU_CG_MODE_IGNORE = 0,
+ CRIU_CG_MODE_NONE = 1,
+ CRIU_CG_MODE_PROPS = 2,
+ CRIU_CG_MODE_SOFT = 3,
+ CRIU_CG_MODE_FULL = 4,
+ CRIU_CG_MODE_STRICT = 5,
+ CRIU_CG_MODE_DEFAULT = 6
+};
+
void criu_set_service_address(char *path);
void criu_set_service_fd(int fd);
void criu_set_service_binary(char *path);
@@ -67,7 +77,7 @@ void criu_set_log_file(char *log_file);
void criu_set_cpu_cap(unsigned int cap);
void criu_set_root(char *root);
void criu_set_manage_cgroups(bool manage);
-void criu_set_manage_cgroups_mode(unsigned int mode);
+void criu_set_manage_cgroups_mode(enum criu_cg_mode mode);
void criu_set_auto_ext_mnt(bool val);
void criu_set_ext_sharing(bool val);
void criu_set_ext_masters(bool val);
@@ -167,7 +177,7 @@ void criu_local_set_log_file(criu_opts *opts, char *log_file);
void criu_local_set_cpu_cap(criu_opts *opts, unsigned int cap);
void criu_local_set_root(criu_opts *opts, char *root);
void criu_local_set_manage_cgroups(criu_opts *opts, bool manage);
-void criu_local_set_manage_cgroups_mode(criu_opts *opts, unsigned int mode);
+void criu_local_set_manage_cgroups_mode(criu_opts *opts, enum criu_cg_mode mode);
void criu_local_set_auto_ext_mnt(criu_opts *opts, bool val);
void criu_local_set_ext_sharing(criu_opts *opts, bool val);
void criu_local_set_ext_masters(criu_opts *opts, bool val);
diff --git a/protobuf/rpc.proto b/protobuf/rpc.proto
index f49325e..04dbfef 100644
--- a/protobuf/rpc.proto
+++ b/protobuf/rpc.proto
@@ -29,6 +29,16 @@ message unix_sk {
required uint32 inode = 1;
};
+enum criu_cg_mode {
+ IGNORE = 0;
+ NONE = 1;
+ PROPS = 2;
+ SOFT = 3;
+ FULL = 4;
+ STRICT = 5;
+ DEFAULT = 6;
+};
+
message criu_opts {
required int32 images_dir_fd = 1;
optional int32 pid = 2; /* if not set on dump, will dump requesting process */
@@ -75,7 +85,7 @@ message criu_opts {
repeated unix_sk unix_sk_ino = 33;
- optional uint32 manage_cgroups_mode = 34;
+ optional criu_cg_mode manage_cgroups_mode = 34;
}
message criu_dump_resp {
--
1.8.3.1
More information about the CRIU
mailing list