Commit 5ae9d9fe authored by Cyrill Gorcunov's avatar Cyrill Gorcunov

cleanup: parasite - Drop PARASITE_CMD_RESTORECORE

Signed-off-by: 's avatarCyrill Gorcunov <gorcunov@gmail.com>
parent ce40f5d9
...@@ -32,7 +32,6 @@ enum { ...@@ -32,7 +32,6 @@ enum {
PARASITE_CMD_KILLME, PARASITE_CMD_KILLME,
PARASITE_CMD_PINGME, PARASITE_CMD_PINGME,
PARASITE_CMD_DUMPPAGES, PARASITE_CMD_DUMPPAGES,
PARASITE_CMD_RESTORECORE,
PARASITE_CMD_MAX, PARASITE_CMD_MAX,
}; };
......
...@@ -76,77 +76,6 @@ static void sys_write_msg(const char *msg) ...@@ -76,77 +76,6 @@ static void sys_write_msg(const char *msg)
sys_write(1, msg, size); sys_write(1, msg, size);
} }
static int restore_core(char *corefile)
{
int ret = PARASITE_ERR_FAIL;
int fd_core;
fd_core = (int)sys_open(corefile, O_RDONLY, 0600);
if (fd_core < 0) {
ret = PARASITE_ERR_OPEN;
goto err_open;
}
/* Skip the header */
sys_lseek(fd_core, GET_FILE_OFF_AFTER(struct core_entry), SEEK_SET);
/* First VMA areas */
while (1) {
unsigned long addr;
ret = sys_read(fd_core, &vma, sizeof(vma));
if (ret && ret != sizeof(vma)) {
ret = PARASITE_ERR_CORE_VMA;
goto err;
}
if (vma.start == 0 && vma.end == 0)
break;
/* Make sure it's mapped into proper place */
addr = sys_mmap((void *)vma.start,
vma.end - vma.start,
vma.prot,
vma.flags | MAP_FIXED,
vma.fd,
vma.pgoff);
if (addr != vma.start) {
ret = PARASITE_ERR_MMAP;
goto err;
}
}
/* Now pages */
while (1) {
unsigned long count;
ret = sys_read(fd_core, &page.va, sizeof(page.va));
if (ret && ret != sizeof(page.va)) {
ret = PARASITE_ERR_CORE_PAGE;
goto err;
}
if (page.va == 0)
break;
ret = sys_read(fd_core, page.data, sizeof(page.data));
if (ret && ret != sizeof(page.data)) {
ret = PARASITE_ERR_CORE_PAGE;
goto err;
}
inline_memcpy((void *)page.va, page.data, sizeof(page.data));
}
ret = 0;
err:
sys_close(fd_core);
err_open:
return ret;
}
/* /*
* This is the main page dumping routine, it's executed * This is the main page dumping routine, it's executed
* inside a victim process space. * inside a victim process space.
...@@ -285,9 +214,6 @@ static int __used parasite_service(unsigned long cmd, void *args, void *brk) ...@@ -285,9 +214,6 @@ static int __used parasite_service(unsigned long cmd, void *args, void *brk)
case PARASITE_CMD_DUMPPAGES: case PARASITE_CMD_DUMPPAGES:
return dump_pages((parasite_args_cmd_dumppages_t *)args); return dump_pages((parasite_args_cmd_dumppages_t *)args);
break; break;
case PARASITE_CMD_RESTORECORE:
return restore_core((char *)args);
break;
default: default:
sys_write_msg("Unknown command to parasite\n"); sys_write_msg("Unknown command to parasite\n");
break; break;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment