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