| Line 6: |
Line 6: |
| | === Request === | | === Request === |
| | ==== criu_req ==== | | ==== criu_req ==== |
| | + | This is the header of the request. It defines the operation requested and options. |
| | + | |
| | <pre> | | <pre> |
| | message criu_req { | | message criu_req { |
| | required criu_req_type type = 1; | | required criu_req_type type = 1; |
| − |
| |
| | optional criu_opts opts = 2; | | optional criu_opts opts = 2; |
| | } | | } |
| Line 16: |
Line 17: |
| | ==== criu_req_type ==== | | ==== criu_req_type ==== |
| | There are 8 request/response types for now. Comments show cmdline analogs. | | 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; |
| Line 23: |
Line 25: |
| | PRE_DUMP = 4; /* criu pre-dump */ | | PRE_DUMP = 4; /* criu pre-dump */ |
| | PAGE_SERVER = 5; /* criu page-server */ | | PAGE_SERVER = 5; /* criu page-server */ |
| − |
| |
| − | NOTIFY = 6;
| |
| − |
| |
| | CPUINFO_DUMP = 7; /* criu cpuinfo dump */ | | CPUINFO_DUMP = 7; /* criu cpuinfo dump */ |
| | CPUINFO_CHECK = 8; /* criu cpuinfo check */ | | CPUINFO_CHECK = 8; /* criu cpuinfo check */ |
| Line 33: |
Line 32: |
| | ==== criu_opts ==== | | ==== criu_opts ==== |
| | 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; |
| Line 68: |
Line 68: |
| | | | |
| | optional bool rst_sibling = 26; /* swrk only */ | | optional bool rst_sibling = 26; /* swrk only */ |
| − | }</pre> | + | } |
| | + | </pre> |
| | | | |
| − | If no pid is set and type is DUMP, CRIU will dump client process by default.
| + | Comments to options. |
| − | Note: Whole tree <pid> must have the same uid, as a client, or client's uid must be == 0, otherwise CRIU won't dump nothing at all.
| |
| | | | |
| − | Only images_dir_fd is required, all other fields may not be set. | + | * If no pid is set and type is DUMP, CRIU will dump client process by default. |
| − | Client must open directory for/with images by himself and set images_dir_fd to it's fd. | + | * All processes in the subtree starting with <pid> must have the same uid, as a client, or client's uid must be root (uid == 0), otherwise CRIU will return error. |
| − | CRIU will open /proc/<client's_pid>/fd/<images_dir_fd>, so it will work, if client is in another namespace. | + | * Only the images_dir_fd is required, all other fields are optional. Client must open directory for/with images by himself and set images_dir_fd to it's fd. CRIU will open /proc/<client's_pid>/fd/<images_dir_fd>. |
| | | | |
| | The logic of setting request is the same as when setting options in console. Here is an example: | | The logic of setting request is the same as when setting options in console. Here is an example: |