mmap and MAP_STACK
Nick Kostirya
nikolay.kostirya at i11.co
Wed Oct 21 13:53:21 UTC 2020
Hello.
I have question about mmap.
void *OSMem::AllocateDataArea(size_t &space)
{
// Round up to an integral number of pages.
space = (space + pageSize-1) & ~(pageSize-1);
int fd = -1; // This value is required by FreeBSD. Linux doesn't care
int flags = MAP_PRIVATE | MAP_ANON;
#ifdef MAP_STACK
if (memUsage == UsageStack) flags |= MAP_STACK; // OpenBSD seems to require this
#endif
void *result = mmap(0, space, PROT_READ|PROT_WRITE, flags, fd, 0);
// Convert MAP_FAILED (-1) into NULL
if (result == MAP_FAILED)
return 0;
return result;
}
When MAP_STACK is used, "insufficient memory" error occurs.
When MAP_STACK removed, it is all right.
Please tell me why.
More information about the freebsd-stable
mailing list