xref: /freebsd/contrib/jemalloc/src/extent_mmap.c (revision c5ad8142)
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) {
24c5ad8142SEric van Gyzen 	assert(alignment == ALIGNMENT_CEILING(alignment, PAGE));
25c5ad8142SEric 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