Revision 3af72a4d linux-user/mmap.c
b/linux-user/mmap.c | ||
---|---|---|
24 | 24 |
#include <unistd.h> |
25 | 25 |
#include <errno.h> |
26 | 26 |
#include <sys/mman.h> |
27 |
#include <linux/mman.h> |
|
28 |
#include <linux/unistd.h> |
|
27 | 29 |
|
28 | 30 |
#include "qemu.h" |
29 | 31 |
#include "qemu-common.h" |
... | ... | |
546 | 548 |
|
547 | 549 |
mmap_lock(); |
548 | 550 |
|
549 |
#if defined(MREMAP_FIXED) |
|
550 | 551 |
if (flags & MREMAP_FIXED) |
551 |
host_addr = mremap(g2h(old_addr), old_size, new_size, |
|
552 |
flags, new_addr); |
|
552 |
host_addr = (void *) syscall(__NR_mremap, g2h(old_addr), |
|
553 |
old_size, new_size, |
|
554 |
flags, |
|
555 |
new_addr); |
|
553 | 556 |
else if (flags & MREMAP_MAYMOVE) { |
554 | 557 |
abi_ulong mmap_start; |
555 | 558 |
|
... | ... | |
559 | 562 |
errno = ENOMEM; |
560 | 563 |
host_addr = MAP_FAILED; |
561 | 564 |
} else |
562 |
host_addr = mremap(g2h(old_addr), old_size, new_size,
|
|
563 |
flags | MREMAP_FIXED, g2h(mmap_start));
|
|
564 |
} else
|
|
565 |
#endif
|
|
566 |
{ |
|
565 |
host_addr = (void *) syscall(__NR_mremap, g2h(old_addr),
|
|
566 |
old_size, new_size,
|
|
567 |
flags | MREMAP_FIXED,
|
|
568 |
g2h(mmap_start));
|
|
569 |
} else {
|
|
567 | 570 |
host_addr = mremap(g2h(old_addr), old_size, new_size, flags); |
568 | 571 |
/* Check if address fits target address space */ |
569 | 572 |
if ((unsigned long)host_addr + new_size > (abi_ulong)-1) { |
Also available in: Unified diff