Emap: Move over metadata splitting logic.

This commit is contained in:
David Goldblatt
2020-02-03 13:27:21 -08:00
committed by David Goldblatt
parent 44f5f53605
commit 7c7b702064
3 changed files with 79 additions and 35 deletions

View File

@@ -70,4 +70,21 @@ void emap_deregister_boundary(tsdn_t *tsdn, emap_t *emap,
void emap_deregister_interior(tsdn_t *tsdn, emap_t *emap,
rtree_ctx_t *rtree_ctx, edata_t *edata);
typedef struct emap_split_prepare_s emap_split_prepare_t;
struct emap_split_prepare_s {
rtree_leaf_elm_t *lead_elm_a;
rtree_leaf_elm_t *lead_elm_b;
rtree_leaf_elm_t *trail_elm_a;
rtree_leaf_elm_t *trail_elm_b;
};
bool emap_split_prepare(tsdn_t *tsdn, emap_t *emap, rtree_ctx_t *rtree_ctx,
emap_split_prepare_t *split_prepare, edata_t *edata, size_t size_a,
szind_t szind_a, bool slab_a, edata_t *trail, size_t size_b,
szind_t szind_b, bool slab_b, unsigned ind_b);
void emap_split_commit(tsdn_t *tsdn, emap_t *emap,
emap_split_prepare_t *split_prepare, edata_t *lead, size_t size_a,
szind_t szind_a, bool slab_a, edata_t *trail, size_t size_b,
szind_t szind_b, bool slab_b);
#endif /* JEMALLOC_INTERNAL_EMAP_H */