1 #include "jemalloc/internal/jemalloc_preamble.h" 2 #include "jemalloc/internal/jemalloc_internal_includes.h" 3 4 #include "jemalloc/internal/hpa_hooks.h" 5 6 static void *hpa_hooks_map(size_t size); 7 static void hpa_hooks_unmap(void *ptr, size_t size); 8 static void hpa_hooks_purge(void *ptr, size_t size); 9 static void hpa_hooks_hugify(void *ptr, size_t size); 10 static void hpa_hooks_dehugify(void *ptr, size_t size); 11 static void hpa_hooks_curtime(nstime_t *r_nstime, bool first_reading); 12 static uint64_t hpa_hooks_ms_since(nstime_t *past_nstime); 13 14 hpa_hooks_t hpa_hooks_default = { 15 &hpa_hooks_map, 16 &hpa_hooks_unmap, 17 &hpa_hooks_purge, 18 &hpa_hooks_hugify, 19 &hpa_hooks_dehugify, 20 &hpa_hooks_curtime, 21 &hpa_hooks_ms_since 22 }; 23 24 static void * 25 hpa_hooks_map(size_t size) { 26 bool commit = true; 27 return pages_map(NULL, size, HUGEPAGE, &commit); 28 } 29 30 static void 31 hpa_hooks_unmap(void *ptr, size_t size) { 32 pages_unmap(ptr, size); 33 } 34 35 static void 36 hpa_hooks_purge(void *ptr, size_t size) { 37 pages_purge_forced(ptr, size); 38 } 39 40 static void 41 hpa_hooks_hugify(void *ptr, size_t size) { 42 bool err = pages_huge(ptr, size); 43 (void)err; 44 } 45 46 static void 47 hpa_hooks_dehugify(void *ptr, size_t size) { 48 bool err = pages_nohuge(ptr, size); 49 (void)err; 50 } 51 52 static void 53 hpa_hooks_curtime(nstime_t *r_nstime, bool first_reading) { 54 if (first_reading) { 55 nstime_init_zero(r_nstime); 56 } 57 nstime_update(r_nstime); 58 } 59 60 static uint64_t 61 hpa_hooks_ms_since(nstime_t *past_nstime) { 62 return nstime_ns_since(past_nstime) / 1000 / 1000; 63 } 64