xref: /netbsd-src/external/bsd/jemalloc.old/include/jemalloc/internal/extent_externs.h (revision 8e33eff89e26cf71871ead62f0d5063e1313c33a)
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