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: |