Commit 0ce623f9 authored by Andrey Vagin's avatar Andrey Vagin Committed by Pavel Emelyanov

crtools: use mremap for remaping shared memory

Signed-off-by: 's avatarAndrey Vagin <avagin@openvz.org>
Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent caf860c2
...@@ -342,29 +342,16 @@ static int prepare_pipes_pid(int pid) ...@@ -342,29 +342,16 @@ static int prepare_pipes_pid(int pid)
static int shmem_remap(void *old_addr, void *new_addr, unsigned long size) static int shmem_remap(void *old_addr, void *new_addr, unsigned long size)
{ {
char path[PATH_MAX]; void *ret;
int fd, ret = -1;
sprintf(path, "/proc/self/map_files/%lx-%lx",
(long)old_addr, (long)old_addr + size);
fd = open(path, O_RDWR); ret = mremap(old_addr, size, size,
if (fd < 0) { MREMAP_FIXED | MREMAP_MAYMOVE, new_addr);
pr_perror("open(%s) failed", path); if (new_addr != ret) {
pr_perror("mremap failed");
return -1; return -1;
} }
/* reuse old_addr variable */ return 0;
old_addr = mmap(new_addr, size, PROT_READ | PROT_WRITE,
MAP_SHARED | MAP_FIXED, fd, 0);
if (new_addr == old_addr)
ret = 0;
else
pr_perror("mmap failed");
close(fd);
return ret;
} }
static int prepare_shared(int ps_fd) static int prepare_shared(int ps_fd)
......
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