the check against MADV_DONTNEED to because linux MADV_DONTNEED semantics conflict dangerously with the POSIX semantics
@@ -1,6 +1,8 @@
+#define _GNU_SOURCE
#include <sys/mman.h>
int posix_madvise(void *addr, size_t len, int advice)
{
- return 0;
+ if (advice == MADV_DONTNEED) return 0;
+ return -__syscall(SYS_madvise, addr, len, advice);
}