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