diff options
-rw-r--r-- | rts/posix/OSMem.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/rts/posix/OSMem.c b/rts/posix/OSMem.c index 6ccd65ab16..ee727a56c4 100644 --- a/rts/posix/OSMem.c +++ b/rts/posix/OSMem.c @@ -191,6 +191,19 @@ my_mmap (void *addr, W_ size, int operation) errno = ENOMEM; } } + + if (operation & MEM_COMMIT) { + madvise(ret, size, MADV_WILLNEED); +#if defined(MADV_DODUMP) + madvise(ret, size, MADV_DODUMP); +#endif + } else { + madvise(ret, size, MADV_DONTNEED); +#if defined(MADV_DONTDUMP) + madvise(ret, size, MADV_DONTDUMP); +#endif + } + #else ret = mmap(addr, size, prot, flags | MAP_ANON | MAP_PRIVATE, -1, 0); #endif |