static int cr_service_work(int sk) { CriuReq *msg = 0; init_opts(); if (recv_criu_msg(sk, &msg) == -1) { pr_perror("Can't recv request"); goto err; } switch (msg->type) { case CRIU_REQ_TYPE__DUMP: return dump_using_req(sk, msg->opts); case CRIU_REQ_TYPE__RESTORE: return restore_using_req(sk, msg->opts); case CRIU_REQ_TYPE__CHECK: return check(sk); case CRIU_REQ_TYPE__PRE_DUMP: return pre_dump_loop(sk, msg); case CRIU_REQ_TYPE__PAGE_SERVER: return start_page_server_req(sk, msg->opts); default: send_criu_err(sk, "Invalid req"); goto err; } err: return -1; }
int cr_service_work(int sk) { int ret = -1; CriuReq *msg = 0; more: if (recv_criu_msg(sk, &msg) == -1) { pr_perror("Can't recv request"); goto err; } if (chk_keepopen_req(msg)) goto err; switch (msg->type) { case CRIU_REQ_TYPE__DUMP: ret = dump_using_req(sk, msg->opts); break; case CRIU_REQ_TYPE__RESTORE: ret = restore_using_req(sk, msg->opts); break; case CRIU_REQ_TYPE__CHECK: ret = check(sk); break; case CRIU_REQ_TYPE__PRE_DUMP: ret = pre_dump_loop(sk, msg); break; case CRIU_REQ_TYPE__PAGE_SERVER: ret = start_page_server_req(sk, msg->opts); break; case CRIU_REQ_TYPE__CPUINFO_DUMP: case CRIU_REQ_TYPE__CPUINFO_CHECK: ret = handle_cpuinfo(sk, msg); break; case CRIU_REQ_TYPE__FEATURE_CHECK: ret = handle_feature_check(sk, msg); break; default: send_criu_err(sk, "Invalid req"); break; } if (!ret && msg->keep_open) { criu_req__free_unpacked(msg, NULL); ret = -1; goto more; } err: return ret; }
static int cr_service_work(int sk) { CriuReq *msg = 0; init_opts(); if (recv_criu_msg(sk, &msg) == -1) { pr_perror("Can't recv request"); goto err; } switch (msg->type) { case CRIU_REQ_TYPE__DUMP: return dump_using_req(sk, msg->opts); case CRIU_REQ_TYPE__RESTORE: return restore_using_req(sk, msg->opts); case CRIU_REQ_TYPE__CHECK: return check(sk); default: { CriuResp resp = CRIU_RESP__INIT; resp.type = CRIU_REQ_TYPE__EMPTY; resp.success = false; /* XXX -- add optional error code to CriuResp */ pr_perror("Invalid request"); send_criu_msg(sk, &resp); goto err; } } err: return -1; }