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