MCPcopy Create free account
hub / github.com/Snapchat/KeyDB / pages_map_slow

Function pages_map_slow

deps/jemalloc/src/pages.c:154–176  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

152}
153
154static void *
155pages_map_slow(size_t size, size_t alignment, bool *commit) {
156 size_t alloc_size = size + alignment - os_page;
157 /* Beware size_t wrap-around. */
158 if (alloc_size < size) {
159 return NULL;
160 }
161
162 void *ret;
163 do {
164 void *pages = os_pages_map(NULL, alloc_size, alignment, commit);
165 if (pages == NULL) {
166 return NULL;
167 }
168 size_t leadsize = ALIGNMENT_CEILING((uintptr_t)pages, alignment)
169 - (uintptr_t)pages;
170 ret = os_pages_trim(pages, alloc_size, leadsize, size, commit);
171 } while (ret == NULL);
172
173 assert(ret != NULL);
174 assert(PAGE_ADDR2BASE(ret) == ret);
175 return ret;
176}
177
178void *
179pages_map(void *addr, size_t size, size_t alignment, bool *commit) {

Callers 1

pages_mapFunction · 0.70

Calls 2

os_pages_mapFunction · 0.70
os_pages_trimFunction · 0.70

Tested by

no test coverage detected