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 * |
22 | extent_alloc_mmap(void *new_addr, size_t size, size_t alignment, bool *zero, |
23 | bool *commit) { |
24 | void *ret = pages_map(new_addr, size, ALIGNMENT_CEILING(alignment, |
25 | PAGE), 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 |
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 | |