xref: /freebsd/contrib/jemalloc/src/extent_mmap.c (revision 7fdf597e96a02165cfe22ff357b857d5fa15ed8a)
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 	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
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