1 #ifndef JEMALLOC_INTERNAL_EXTENT_EXTERNS_H
2 #define JEMALLOC_INTERNAL_EXTENT_EXTERNS_H
3 
4 #pragma GCC visibility push(hidden)
5 
6 extern rtree_t			extents_rtree;
7 extern const extent_hooks_t	extent_hooks_default;
8 
9 extent_t	*extent_alloc(tsdn_t *tsdn, arena_t *arena);
10 void	extent_dalloc(tsdn_t *tsdn, arena_t *arena, extent_t *extent);
11 
12 extent_hooks_t	*extent_hooks_get(arena_t *arena);
13 extent_hooks_t	*extent_hooks_set(arena_t *arena, extent_hooks_t *extent_hooks);
14 
15 #ifdef JEMALLOC_JET
16 typedef size_t (extent_size_quantize_t)(size_t);
17 extern extent_size_quantize_t *extent_size_quantize_floor;
18 extern extent_size_quantize_t *extent_size_quantize_ceil;
19 #else
20 size_t	extent_size_quantize_floor(size_t size);
21 size_t	extent_size_quantize_ceil(size_t size);
22 #endif
23 
24 ph_proto(, extent_heap_, extent_heap_t, extent_t)
25 
26 extent_t	*extent_alloc_cache_locked(tsdn_t *tsdn, arena_t *arena,
27     extent_hooks_t **r_extent_hooks, void *new_addr, size_t usize, size_t pad,
28     size_t alignment, bool *zero, bool *commit, bool slab);
29 extent_t	*extent_alloc_cache(tsdn_t *tsdn, arena_t *arena,
30     extent_hooks_t **r_extent_hooks, void *new_addr, size_t usize, size_t pad,
31     size_t alignment, bool *zero, bool *commit, bool slab);
32 extent_t	*extent_alloc_wrapper(tsdn_t *tsdn, arena_t *arena,
33     extent_hooks_t **r_extent_hooks, void *new_addr, size_t usize, size_t pad,
34     size_t alignment, bool *zero, bool *commit, bool slab);
35 void	extent_dalloc_gap(tsdn_t *tsdn, arena_t *arena, extent_t *extent);
36 void	extent_dalloc_cache(tsdn_t *tsdn, arena_t *arena,
37     extent_hooks_t **r_extent_hooks, extent_t *extent);
38 bool	extent_dalloc_wrapper_try(tsdn_t *tsdn, arena_t *arena,
39     extent_hooks_t **r_extent_hooks, extent_t *extent);
40 void	extent_dalloc_wrapper(tsdn_t *tsdn, arena_t *arena,
41     extent_hooks_t **r_extent_hooks, extent_t *extent);
42 bool	extent_commit_wrapper(tsdn_t *tsdn, arena_t *arena,
43     extent_hooks_t **r_extent_hooks, extent_t *extent, size_t offset,
44     size_t length);
45 bool	extent_decommit_wrapper(tsdn_t *tsdn, arena_t *arena,
46     extent_hooks_t **r_extent_hooks, extent_t *extent, size_t offset,
47     size_t length);
48 bool	extent_purge_lazy_wrapper(tsdn_t *tsdn, arena_t *arena,
49     extent_hooks_t **r_extent_hooks, extent_t *extent, size_t offset,
50     size_t length);
51 bool	extent_purge_forced_wrapper(tsdn_t *tsdn, arena_t *arena,
52     extent_hooks_t **r_extent_hooks, extent_t *extent, size_t offset,
53     size_t length);
54 extent_t	*extent_split_wrapper(tsdn_t *tsdn, arena_t *arena,
55     extent_hooks_t **r_extent_hooks, extent_t *extent, size_t size_a,
56     size_t usize_a, size_t size_b, size_t usize_b);
57 bool	extent_merge_wrapper(tsdn_t *tsdn, arena_t *arena,
58     extent_hooks_t **r_extent_hooks, extent_t *a, extent_t *b);
59 
60 bool	extent_boot(void);
61 
62 #pragma GCC visibility pop
63 
64 #endif /* JEMALLOC_INTERNAL_EXTENT_EXTERNS_H */
65