Am 01.07.2016 um 22:12 schrieb Richard Henderson:
On 06/30/2016 12:37 AM, Peter Lieven wrote:
+void *qemu_alloc_stack(size_t sz)
+{
+ /* allocate sz bytes plus one extra page for a guard
+ * page at the bottom of the stack */
+ void *ptr = mmap(NULL, sz + getpagesize(), PROT_NONE,
+ MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+ if (ptr == MAP_FAILED) {
+ abort();
+ }
+ if (mmap(ptr + getpagesize(), sz, PROT_READ | PROT_WRITE,
+ MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, -1, 0) == MAP_FAILED) {
+ abort();
+ }
Why two mmap instead of mmap + mprotect?
r~
I was looking at qemu_ram_mmap too much. mprotect seems the cleaner solution.
Thanks,
Peter