summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rts/posix/OSMem.c13
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