1 #ifndef JEMALLOC_INTERNAL_ARENA_EXTERNS_H 2 #define JEMALLOC_INTERNAL_ARENA_EXTERNS_H 3 4 #include "jemalloc/internal/extent_dss.h" 5 #include "jemalloc/internal/pages.h" 6 #include "jemalloc/internal/size_classes.h" 7 #include "jemalloc/internal/stats.h" 8 9 extern ssize_t opt_dirty_decay_ms; 10 extern ssize_t opt_muzzy_decay_ms; 11 12 extern const arena_bin_info_t arena_bin_info[NBINS]; 13 14 extern percpu_arena_mode_t opt_percpu_arena; 15 extern const char *percpu_arena_mode_names[]; 16 17 extern const uint64_t h_steps[SMOOTHSTEP_NSTEPS]; 18 extern malloc_mutex_t arenas_lock; 19 20 void arena_stats_large_nrequests_add(tsdn_t *tsdn, arena_stats_t *arena_stats, 21 szind_t szind, uint64_t nrequests); 22 void arena_stats_mapped_add(tsdn_t *tsdn, arena_stats_t *arena_stats, 23 size_t size); 24 void arena_basic_stats_merge(tsdn_t *tsdn, arena_t *arena, 25 unsigned *nthreads, const char **dss, ssize_t *dirty_decay_ms, 26 ssize_t *muzzy_decay_ms, size_t *nactive, size_t *ndirty, size_t *nmuzzy); 27 void arena_stats_merge(tsdn_t *tsdn, arena_t *arena, unsigned *nthreads, 28 const char **dss, ssize_t *dirty_decay_ms, ssize_t *muzzy_decay_ms, 29 size_t *nactive, size_t *ndirty, size_t *nmuzzy, arena_stats_t *astats, 30 malloc_bin_stats_t *bstats, malloc_large_stats_t *lstats); 31 void arena_extents_dirty_dalloc(tsdn_t *tsdn, arena_t *arena, 32 extent_hooks_t **r_extent_hooks, extent_t *extent); 33 #ifdef JEMALLOC_JET 34 size_t arena_slab_regind(extent_t *slab, szind_t binind, const void *ptr); 35 #endif 36 extent_t *arena_extent_alloc_large(tsdn_t *tsdn, arena_t *arena, 37 size_t usize, size_t alignment, bool *zero); 38 void arena_extent_dalloc_large_prep(tsdn_t *tsdn, arena_t *arena, 39 extent_t *extent); 40 void arena_extent_ralloc_large_shrink(tsdn_t *tsdn, arena_t *arena, 41 extent_t *extent, size_t oldsize); 42 void arena_extent_ralloc_large_expand(tsdn_t *tsdn, arena_t *arena, 43 extent_t *extent, size_t oldsize); 44 ssize_t arena_dirty_decay_ms_get(arena_t *arena); 45 bool arena_dirty_decay_ms_set(tsdn_t *tsdn, arena_t *arena, ssize_t decay_ms); 46 ssize_t arena_muzzy_decay_ms_get(arena_t *arena); 47 bool arena_muzzy_decay_ms_set(tsdn_t *tsdn, arena_t *arena, ssize_t decay_ms); 48 void arena_decay(tsdn_t *tsdn, arena_t *arena, bool is_background_thread, 49 bool all); 50 void arena_reset(tsd_t *tsd, arena_t *arena); 51 void arena_destroy(tsd_t *tsd, arena_t *arena); 52 void arena_tcache_fill_small(tsdn_t *tsdn, arena_t *arena, tcache_t *tcache, 53 tcache_bin_t *tbin, szind_t binind, uint64_t prof_accumbytes); 54 void arena_alloc_junk_small(void *ptr, const arena_bin_info_t *bin_info, 55 bool zero); 56 57 typedef void (arena_dalloc_junk_small_t)(void *, const arena_bin_info_t *); 58 extern arena_dalloc_junk_small_t *JET_MUTABLE arena_dalloc_junk_small; 59 60 void *arena_malloc_hard(tsdn_t *tsdn, arena_t *arena, size_t size, 61 szind_t ind, bool zero); 62 void *arena_palloc(tsdn_t *tsdn, arena_t *arena, size_t usize, 63 size_t alignment, bool zero, tcache_t *tcache); 64 void arena_prof_promote(tsdn_t *tsdn, const void *ptr, size_t usize); 65 void arena_dalloc_promoted(tsdn_t *tsdn, void *ptr, tcache_t *tcache, 66 bool slow_path); 67 void arena_dalloc_bin_junked_locked(tsdn_t *tsdn, arena_t *arena, 68 extent_t *extent, void *ptr); 69 void arena_dalloc_small(tsdn_t *tsdn, void *ptr); 70 bool arena_ralloc_no_move(tsdn_t *tsdn, void *ptr, size_t oldsize, size_t size, 71 size_t extra, bool zero); 72 void *arena_ralloc(tsdn_t *tsdn, arena_t *arena, void *ptr, size_t oldsize, 73 size_t size, size_t alignment, bool zero, tcache_t *tcache); 74 dss_prec_t arena_dss_prec_get(arena_t *arena); 75 bool arena_dss_prec_set(arena_t *arena, dss_prec_t dss_prec); 76 ssize_t arena_dirty_decay_ms_default_get(void); 77 bool arena_dirty_decay_ms_default_set(ssize_t decay_ms); 78 ssize_t arena_muzzy_decay_ms_default_get(void); 79 bool arena_muzzy_decay_ms_default_set(ssize_t decay_ms); 80 unsigned arena_nthreads_get(arena_t *arena, bool internal); 81 void arena_nthreads_inc(arena_t *arena, bool internal); 82 void arena_nthreads_dec(arena_t *arena, bool internal); 83 size_t arena_extent_sn_next(arena_t *arena); 84 arena_t *arena_new(tsdn_t *tsdn, unsigned ind, extent_hooks_t *extent_hooks); 85 void arena_boot(void); 86 void arena_prefork0(tsdn_t *tsdn, arena_t *arena); 87 void arena_prefork1(tsdn_t *tsdn, arena_t *arena); 88 void arena_prefork2(tsdn_t *tsdn, arena_t *arena); 89 void arena_prefork3(tsdn_t *tsdn, arena_t *arena); 90 void arena_prefork4(tsdn_t *tsdn, arena_t *arena); 91 void arena_prefork5(tsdn_t *tsdn, arena_t *arena); 92 void arena_prefork6(tsdn_t *tsdn, arena_t *arena); 93 void arena_prefork7(tsdn_t *tsdn, arena_t *arena); 94 void arena_postfork_parent(tsdn_t *tsdn, arena_t *arena); 95 void arena_postfork_child(tsdn_t *tsdn, arena_t *arena); 96 97 #endif /* JEMALLOC_INTERNAL_ARENA_EXTERNS_H */ 98