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