Define MADV_FREE on our own when needed.

On x86 Linux, we define our own MADV_FREE if madvise(2) is available, but no
MADV_FREE is detected.  This allows the feature to be built in and enabled with
runtime detection.
This commit is contained in:
Qi Wang
2017-10-05 16:28:55 -07:00
committed by Qi Wang
parent fc83de0384
commit 31ab38be5f
4 changed files with 23 additions and 1 deletions

View File

@@ -269,7 +269,13 @@ pages_purge_lazy(void *addr, size_t size) {
VirtualAlloc(addr, size, MEM_RESET, PAGE_READWRITE);
return false;
#elif defined(JEMALLOC_PURGE_MADVISE_FREE)
return (madvise(addr, size, MADV_FREE) != 0);
return (madvise(addr, size,
# ifdef MADV_FREE
MADV_FREE
# else
JEMALLOC_MADV_FREE
# endif
) != 0);
#elif defined(JEMALLOC_PURGE_MADVISE_DONTNEED) && \
!defined(JEMALLOC_PURGE_MADVISE_DONTNEED_ZEROS)
return (madvise(addr, size, MADV_DONTNEED) != 0);