Home | History | Annotate | Line # | Download | only in internal
      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