Home | History | Annotate | Download | only in internal

Lines Matching refs:emap

35 bool emap_init(emap_t *emap, base_t *base, bool zeroed);
37 void emap_remap(tsdn_t *tsdn, emap_t *emap, edata_t *edata, szind_t szind,
40 void emap_update_edata_state(tsdn_t *tsdn, emap_t *emap, edata_t *edata,
58 edata_t *emap_try_acquire_edata_neighbor(tsdn_t *tsdn, emap_t *emap,
61 edata_t *emap_try_acquire_edata_neighbor_expand(tsdn_t *tsdn, emap_t *emap,
63 void emap_release_edata(tsdn_t *tsdn, emap_t *emap, edata_t *edata,
71 bool emap_register_boundary(tsdn_t *tsdn, emap_t *emap, edata_t *edata,
93 void emap_register_interior(tsdn_t *tsdn, emap_t *emap, edata_t *edata,
96 void emap_deregister_boundary(tsdn_t *tsdn, emap_t *emap, edata_t *edata);
97 void emap_deregister_interior(tsdn_t *tsdn, emap_t *emap, edata_t *edata);
108 * These functions the emap metadata management for merging, splitting, and
122 * the emap invariants. The only function that can fail is emap_split_prepare,
129 bool emap_split_prepare(tsdn_t *tsdn, emap_t *emap, emap_prepare_t *prepare,
131 void emap_split_commit(tsdn_t *tsdn, emap_t *emap, emap_prepare_t *prepare,
133 void emap_merge_prepare(tsdn_t *tsdn, emap_t *emap, emap_prepare_t *prepare,
135 void emap_merge_commit(tsdn_t *tsdn, emap_t *emap, emap_prepare_t *prepare,
138 /* Assert that the emap's view of the given edata matches the edata's view. */
139 void emap_do_assert_mapped(tsdn_t *tsdn, emap_t *emap, edata_t *edata);
141 emap_assert_mapped(tsdn_t *tsdn, emap_t *emap, edata_t *edata) {
143 emap_do_assert_mapped(tsdn, emap, edata);
148 void emap_do_assert_not_mapped(tsdn_t *tsdn, emap_t *emap, edata_t *edata);
150 emap_assert_not_mapped(tsdn_t *tsdn, emap_t *emap, edata_t *edata) {
152 emap_do_assert_not_mapped(tsdn, emap, edata);
157 emap_edata_in_transition(tsdn_t *tsdn, emap_t *emap, edata_t *edata) {
159 emap_assert_mapped(tsdn, emap, edata);
162 rtree_contents_t contents = rtree_read(tsdn, &emap->rtree, rtree_ctx,
169 emap_edata_is_acquired(tsdn_t *tsdn, emap_t *emap, edata_t *edata) {
179 * 1) edata not hooked into emap yet -- This implies the edata just got
183 * be discovered from the emap, however the state tracked in the rtree
187 rtree_leaf_elm_t *elm = rtree_leaf_elm_lookup(tsdn, &emap->rtree,
193 rtree_contents_t contents = rtree_leaf_elm_read(tsdn, &emap->rtree, elm,
226 emap_edata_lookup(tsdn_t *tsdn, emap_t *emap, const void *ptr) {
229 return rtree_read(tsdn, &emap->rtree, rtree_ctx, (uintptr_t)ptr).edata;
234 emap_alloc_ctx_lookup(tsdn_t *tsdn, emap_t *emap, const void *ptr,
238 rtree_metadata_t metadata = rtree_metadata_read(tsdn, &emap->rtree,
246 emap_full_alloc_ctx_lookup(tsdn_t *tsdn, emap_t *emap, const void *ptr,
250 rtree_contents_t contents = rtree_read(tsdn, &emap->rtree, rtree_ctx,
263 emap_full_alloc_ctx_try_lookup(tsdn_t *tsdn, emap_t *emap, const void *ptr,
268 bool err = rtree_read_independent(tsdn, &emap->rtree, rtree_ctx,
284 emap_alloc_ctx_try_lookup_fast(tsd_t *tsd, emap_t *emap, const void *ptr,
290 bool err = rtree_metadata_try_read_fast(tsd_tsdn(tsd), &emap->rtree,
303 * invert usual ordering in deciding what to flush). This lets the emap avoid
320 emap_edata_lookup_batch(tsd_t *tsd, emap_t *emap, size_t nptrs,
335 &emap->rtree, rtree_ctx, (uintptr_t)ptr,
342 &emap->rtree, elm, /* dependent */ true);