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