1*8e33eff8Schristos #define JEMALLOC_EXTENT_MMAP_C_ 2*8e33eff8Schristos #include "jemalloc/internal/jemalloc_preamble.h" 3*8e33eff8Schristos #include "jemalloc/internal/jemalloc_internal_includes.h" 4*8e33eff8Schristos 5*8e33eff8Schristos #include "jemalloc/internal/assert.h" 6*8e33eff8Schristos #include "jemalloc/internal/extent_mmap.h" 7*8e33eff8Schristos 8*8e33eff8Schristos /******************************************************************************/ 9*8e33eff8Schristos /* Data. */ 10*8e33eff8Schristos 11*8e33eff8Schristos bool opt_retain = 12*8e33eff8Schristos #ifdef JEMALLOC_RETAIN 13*8e33eff8Schristos true 14*8e33eff8Schristos #else 15*8e33eff8Schristos false 16*8e33eff8Schristos #endif 17*8e33eff8Schristos ; 18*8e33eff8Schristos 19*8e33eff8Schristos /******************************************************************************/ 20*8e33eff8Schristos 21*8e33eff8Schristos void * 22*8e33eff8Schristos extent_alloc_mmap(void *new_addr, size_t size, size_t alignment, bool *zero, 23*8e33eff8Schristos bool *commit) { 24*8e33eff8Schristos void *ret = pages_map(new_addr, size, ALIGNMENT_CEILING(alignment, 25*8e33eff8Schristos PAGE), commit); 26*8e33eff8Schristos if (ret == NULL) { 27*8e33eff8Schristos return NULL; 28*8e33eff8Schristos } 29*8e33eff8Schristos assert(ret != NULL); 30*8e33eff8Schristos if (*commit) { 31*8e33eff8Schristos *zero = true; 32*8e33eff8Schristos } 33*8e33eff8Schristos return ret; 34*8e33eff8Schristos } 35*8e33eff8Schristos 36*8e33eff8Schristos bool 37*8e33eff8Schristos extent_dalloc_mmap(void *addr, size_t size) { 38*8e33eff8Schristos if (!opt_retain) { 39*8e33eff8Schristos pages_unmap(addr, size); 40*8e33eff8Schristos } 41*8e33eff8Schristos return opt_retain; 42*8e33eff8Schristos } 43