diff options
author | Jason Evans <jasone@canonware.com> | 2012-10-16 17:40:57 (GMT) |
---|---|---|
committer | Jason Evans <jasone@canonware.com> | 2012-10-16 17:40:57 (GMT) |
commit | 3b1f3aca54fede23299cde9034f7b909c3d290d7 (patch) | |
tree | 9915372dbfc04d5c086143570d74ac704a2eb736 /src/chunk_mmap.c | |
parent | fc9b1dbf69f59d7ecfc4ac68da9847e017e1d046 (diff) | |
parent | 2b592b0f0bd043c0d14f8923f3c16009e5e312d5 (diff) | |
download | jemalloc-3.1.0.zip jemalloc-3.1.0.tar.gz jemalloc-3.1.0.tar.bz2 |
Merge branch 'dev'3.1.0
Diffstat (limited to 'src/chunk_mmap.c')
-rw-r--r-- | src/chunk_mmap.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/chunk_mmap.c b/src/chunk_mmap.c index c8da655..8a42e75 100644 --- a/src/chunk_mmap.c +++ b/src/chunk_mmap.c @@ -113,22 +113,30 @@ pages_trim(void *addr, size_t alloc_size, size_t leadsize, size_t size) #endif } -void +bool pages_purge(void *addr, size_t length) { + bool unzeroed; #ifdef _WIN32 VirtualAlloc(addr, length, MEM_RESET, PAGE_READWRITE); + unzeroed = true; #else # ifdef JEMALLOC_PURGE_MADVISE_DONTNEED # define JEMALLOC_MADV_PURGE MADV_DONTNEED +# define JEMALLOC_MADV_ZEROS true # elif defined(JEMALLOC_PURGE_MADVISE_FREE) # define JEMALLOC_MADV_PURGE MADV_FREE +# define JEMALLOC_MADV_ZEROS false # else # error "No method defined for purging unused dirty pages." # endif - madvise(addr, length, JEMALLOC_MADV_PURGE); + int err = madvise(addr, length, JEMALLOC_MADV_PURGE); + unzeroed = (JEMALLOC_MADV_ZEROS == false || err != 0); +# undef JEMALLOC_MADV_PURGE +# undef JEMALLOC_MADV_ZEROS #endif + return (unzeroed); } static void * |