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