Line 15:
Line 15:
==== criu_req_type ====
==== criu_req_type ====
−
There are only 2 request/response types for now.
+
There are 8 request/response types for now. Comments show cmdline analogs.
<pre>enum criu_req_type {
<pre>enum criu_req_type {
EMPTY = 0;
EMPTY = 0;
−
DUMP = 1;
+
DUMP = 1; /* criu dump */
−
RESTORE = 2;
+
RESTORE = 2; /* criu restore */
+
CHECK = 3; /* criu check */
+
PRE_DUMP = 4; /* criu pre-dump */
+
PAGE_SERVER = 5; /* criu page-server */
+
+
NOTIFY = 6;
+
+
CPUINFO_DUMP = 7; /* criu cpuinfo dump */
+
CPUINFO_CHECK = 8; /* criu cpuinfo check */
}
}
</pre>
</pre>
Line 26:
Line 34:
It is used to store options.
It is used to store options.
<pre>message criu_opts {
<pre>message criu_opts {
−
required int32 images_dir_fd = 1;
+
required int32 images_dir_fd = 1;
−
optional int32 pid = 2;
+
optional int32 pid = 2; /* if not set on dump, will dump requesting process */
+
+
optional bool leave_running = 3;
+
optional bool ext_unix_sk = 4;
+
optional bool tcp_established = 5;
+
optional bool evasive_devices = 6;
+
optional bool shell_job = 7;
+
optional bool file_locks = 8;
+
optional int32 log_level = 9 [default = 2];
+
optional string log_file = 10; /* No subdirs are allowed. Consider using work-dir */
+
+
optional criu_page_server_info ps = 11;
−
optional bool leave_running = 3;
+
optional bool notify_scripts = 12;
−
optional bool ext_unix_sk = 4;
+
−
optional bool tcp_established = 5;
+
optional string root = 13;
−
optional bool evasive_devices = 6;
+
optional string parent_img = 14;
−
optional bool shell_job = 7;
+
optional bool track_mem = 15;
−
optional bool file_locks = 8;
+
optional bool auto_dedup = 16;
−
optional int32 log_level = 9 [default = 2];
+
−
optional string log_file = 10;
+
optional int32 work_dir_fd = 17;
+
optional bool link_remap = 18;
+
repeated criu_veth_pair veths = 19;
+
+
optional uint32 cpu_cap = 20 [default = 0xffffffff];
+
optional bool force_irmap = 21;
+
repeated string exec_cmd = 22;
+
+
repeated ext_mount_map ext_mnt = 23;
+
optional bool manage_cgroups = 24;
+
repeated cgroup_root cg_root = 25;
+
+
optional bool rst_sibling = 26; /* swrk only */
}</pre>
}</pre>
Line 57:
Line 88:
</pre>
</pre>
+
===== criu_page_server_info =====
+
Stores info about page-server.
+
<pre>
+
message criu_page_server_info {
+
optional string address = 1; /* bind address -- if not set 0.0.0.0 is used */
+
optional int32 port = 2; /* bind port -- if not set on request, autobind is used and port is returned in response */
+
optional int32 pid = 3; /* page-server pid -- returned in response */
+
optional int32 fd = 4; /* could be used to inherit fd by page-server */
+
}
+
</pre>
+
===== criu_veth_pair =====
+
TODO
+
<pre>
+
message criu_veth_pair {
+
required string if_in = 1;
+
required string if_out = 2;
+
};
+
</pre>
+
===== ext_mount_map =====
+
TODO
+
<pre>
+
message ext_mount_map {
+
required string key = 1;
+
required string val = 2;
+
};
+
</pre>
+
===== cgroup_root =====
+
TODO
+
<pre>
+
message cgroup_root {
+
optional string ctrl = 1;
+
required string path = 2;
+
};
+
</pre>
=== Response ===
=== Response ===
==== criu_resp ====
==== criu_resp ====
<pre>message criu_resp {
<pre>message criu_resp {
−
required criu_req_type type = 1;
+
required criu_req_type type = 1;
−
required bool success = 2;
+
required bool success = 2;
−
optional criu_dump_resp dump = 3;
+
optional criu_dump_resp dump = 3;
−
optional criu_restore_resp restore = 4;
+
optional criu_restore_resp restore = 4;
+
optional criu_notify notify = 5;
+
optional criu_page_server_info ps = 6;
}
}
</pre>
</pre>
Line 86:
Line 153:
Field "pid" is set to the PID of the restored process.
Field "pid" is set to the PID of the restored process.
+
==== criu_notify ====
+
TODO
+
<pre>
+
message criu_notify {
+
optional string script = 1;
+
optional int32 pid = 2;
+
}
+
</pre>
== Run ==
== Run ==
=== Server ===
=== Server ===