Revision 7bc7b099 linux-user/mmap.c
b/linux-user/mmap.c | ||
---|---|---|
80 | 80 |
void *qemu_vmalloc(size_t size) |
81 | 81 |
{ |
82 | 82 |
void *p; |
83 |
unsigned long addr; |
|
83 |
|
|
84 | 84 |
mmap_lock(); |
85 | 85 |
/* Use map and mark the pages as used. */ |
86 | 86 |
p = mmap(NULL, size, PROT_READ | PROT_WRITE, |
87 | 87 |
MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); |
88 | 88 |
|
89 |
addr = (unsigned long)p; |
|
90 |
if (addr == (target_ulong) addr) { |
|
91 |
/* Allocated region overlaps guest address space. |
|
92 |
This may recurse. */ |
|
89 |
if (h2g_valid(p)) { |
|
90 |
/* Allocated region overlaps guest address space. This may recurse. */ |
|
91 |
unsigned long addr = h2g(p); |
|
93 | 92 |
page_set_flags(addr & TARGET_PAGE_MASK, TARGET_PAGE_ALIGN(addr + size), |
94 | 93 |
PAGE_RESERVED); |
95 | 94 |
} |
Also available in: Unified diff