1*8e33eff8Schristos #ifndef JEMALLOC_INTERNAL_EXTENT_EXTERNS_H 2*8e33eff8Schristos #define JEMALLOC_INTERNAL_EXTENT_EXTERNS_H 3*8e33eff8Schristos 4*8e33eff8Schristos #include "jemalloc/internal/mutex.h" 5*8e33eff8Schristos #include "jemalloc/internal/mutex_pool.h" 6*8e33eff8Schristos #include "jemalloc/internal/ph.h" 7*8e33eff8Schristos #include "jemalloc/internal/rtree.h" 8*8e33eff8Schristos 9*8e33eff8Schristos extern size_t opt_lg_extent_max_active_fit; 10*8e33eff8Schristos 11*8e33eff8Schristos extern rtree_t extents_rtree; 12*8e33eff8Schristos extern const extent_hooks_t extent_hooks_default; 13*8e33eff8Schristos extern mutex_pool_t extent_mutex_pool; 14*8e33eff8Schristos 15*8e33eff8Schristos extent_t *extent_alloc(tsdn_t *tsdn, arena_t *arena); 16*8e33eff8Schristos void extent_dalloc(tsdn_t *tsdn, arena_t *arena, extent_t *extent); 17*8e33eff8Schristos 18*8e33eff8Schristos extent_hooks_t *extent_hooks_get(arena_t *arena); 19*8e33eff8Schristos extent_hooks_t *extent_hooks_set(tsd_t *tsd, arena_t *arena, 20*8e33eff8Schristos extent_hooks_t *extent_hooks); 21*8e33eff8Schristos 22*8e33eff8Schristos #ifdef JEMALLOC_JET 23*8e33eff8Schristos size_t extent_size_quantize_floor(size_t size); 24*8e33eff8Schristos size_t extent_size_quantize_ceil(size_t size); 25*8e33eff8Schristos #endif 26*8e33eff8Schristos 27*8e33eff8Schristos ph_proto(, extent_avail_, extent_tree_t, extent_t) 28*8e33eff8Schristos ph_proto(, extent_heap_, extent_heap_t, extent_t) 29*8e33eff8Schristos 30*8e33eff8Schristos bool extents_init(tsdn_t *tsdn, extents_t *extents, extent_state_t state, 31*8e33eff8Schristos bool delay_coalesce); 32*8e33eff8Schristos extent_state_t extents_state_get(const extents_t *extents); 33*8e33eff8Schristos size_t extents_npages_get(extents_t *extents); 34*8e33eff8Schristos extent_t *extents_alloc(tsdn_t *tsdn, arena_t *arena, 35*8e33eff8Schristos extent_hooks_t **r_extent_hooks, extents_t *extents, void *new_addr, 36*8e33eff8Schristos size_t size, size_t pad, size_t alignment, bool slab, szind_t szind, 37*8e33eff8Schristos bool *zero, bool *commit); 38*8e33eff8Schristos void extents_dalloc(tsdn_t *tsdn, arena_t *arena, 39*8e33eff8Schristos extent_hooks_t **r_extent_hooks, extents_t *extents, extent_t *extent); 40*8e33eff8Schristos extent_t *extents_evict(tsdn_t *tsdn, arena_t *arena, 41*8e33eff8Schristos extent_hooks_t **r_extent_hooks, extents_t *extents, size_t npages_min); 42*8e33eff8Schristos void extents_prefork(tsdn_t *tsdn, extents_t *extents); 43*8e33eff8Schristos void extents_postfork_parent(tsdn_t *tsdn, extents_t *extents); 44*8e33eff8Schristos void extents_postfork_child(tsdn_t *tsdn, extents_t *extents); 45*8e33eff8Schristos extent_t *extent_alloc_wrapper(tsdn_t *tsdn, arena_t *arena, 46*8e33eff8Schristos extent_hooks_t **r_extent_hooks, void *new_addr, size_t size, size_t pad, 47*8e33eff8Schristos size_t alignment, bool slab, szind_t szind, bool *zero, bool *commit); 48*8e33eff8Schristos void extent_dalloc_gap(tsdn_t *tsdn, arena_t *arena, extent_t *extent); 49*8e33eff8Schristos void extent_dalloc_wrapper(tsdn_t *tsdn, arena_t *arena, 50*8e33eff8Schristos extent_hooks_t **r_extent_hooks, extent_t *extent); 51*8e33eff8Schristos void extent_destroy_wrapper(tsdn_t *tsdn, arena_t *arena, 52*8e33eff8Schristos extent_hooks_t **r_extent_hooks, extent_t *extent); 53*8e33eff8Schristos bool extent_commit_wrapper(tsdn_t *tsdn, arena_t *arena, 54*8e33eff8Schristos extent_hooks_t **r_extent_hooks, extent_t *extent, size_t offset, 55*8e33eff8Schristos size_t length); 56*8e33eff8Schristos bool extent_decommit_wrapper(tsdn_t *tsdn, arena_t *arena, 57*8e33eff8Schristos extent_hooks_t **r_extent_hooks, extent_t *extent, size_t offset, 58*8e33eff8Schristos size_t length); 59*8e33eff8Schristos bool extent_purge_lazy_wrapper(tsdn_t *tsdn, arena_t *arena, 60*8e33eff8Schristos extent_hooks_t **r_extent_hooks, extent_t *extent, size_t offset, 61*8e33eff8Schristos size_t length); 62*8e33eff8Schristos bool extent_purge_forced_wrapper(tsdn_t *tsdn, arena_t *arena, 63*8e33eff8Schristos extent_hooks_t **r_extent_hooks, extent_t *extent, size_t offset, 64*8e33eff8Schristos size_t length); 65*8e33eff8Schristos extent_t *extent_split_wrapper(tsdn_t *tsdn, arena_t *arena, 66*8e33eff8Schristos extent_hooks_t **r_extent_hooks, extent_t *extent, size_t size_a, 67*8e33eff8Schristos szind_t szind_a, bool slab_a, size_t size_b, szind_t szind_b, bool slab_b); 68*8e33eff8Schristos bool extent_merge_wrapper(tsdn_t *tsdn, arena_t *arena, 69*8e33eff8Schristos extent_hooks_t **r_extent_hooks, extent_t *a, extent_t *b); 70*8e33eff8Schristos 71*8e33eff8Schristos bool extent_boot(void); 72*8e33eff8Schristos 73*8e33eff8Schristos #endif /* JEMALLOC_INTERNAL_EXTENT_EXTERNS_H */ 74