Lines Matching refs:b_node
1794 static inline void mab_shift_right(struct maple_big_node *b_node, in mab_shift_right() argument
1797 unsigned long size = b_node->b_end * sizeof(unsigned long); in mab_shift_right()
1799 memmove(b_node->pivot + shift, b_node->pivot, size); in mab_shift_right()
1800 memmove(b_node->slot + shift, b_node->slot, size); in mab_shift_right()
1801 if (b_node->type == maple_arange_64) in mab_shift_right()
1802 memmove(b_node->gap + shift, b_node->gap, size); in mab_shift_right()
1813 static inline bool mab_middle_node(struct maple_big_node *b_node, int split, in mab_middle_node() argument
1816 unsigned char size = b_node->b_end; in mab_middle_node()
1821 if (!b_node->slot[split] && (size >= 2 * slot_count - 1)) in mab_middle_node()
1835 static inline int mab_no_null_split(struct maple_big_node *b_node, in mab_no_null_split() argument
1838 if (!b_node->slot[split]) { in mab_no_null_split()
1844 (b_node->b_end - split) > (mt_min_slots[b_node->type])) in mab_no_null_split()
1921 unsigned char mas_end, struct maple_big_node *b_node, in mas_mab_cp() argument
1935 b_node->pivot[j] = pivots[i++]; in mas_mab_cp()
1943 b_node->pivot[j] = pivots[i]; in mas_mab_cp()
1944 if (unlikely(!b_node->pivot[j])) in mas_mab_cp()
1947 if (unlikely(mas->max == b_node->pivot[j])) in mas_mab_cp()
1951 b_node->pivot[j] = mas_safe_pivot(mas, pivots, i, mt); in mas_mab_cp()
1954 b_node->b_end = ++j; in mas_mab_cp()
1957 memcpy(b_node->slot + mab_start, slots + mas_start, sizeof(void *) * j); in mas_mab_cp()
1960 memcpy(b_node->gap + mab_start, gaps + mas_start, in mas_mab_cp()
1985 static inline void mab_mas_cp(struct maple_big_node *b_node, in mab_mas_cp() argument
2005 pivots[j++] = b_node->pivot[i++]; in mab_mas_cp()
2006 } while (i <= mab_end && likely(b_node->pivot[i])); in mab_mas_cp()
2008 memcpy(slots, b_node->slot + mab_start, in mab_mas_cp()
2012 mas->max = b_node->pivot[i - 1]; in mab_mas_cp()
2021 gaps[--j] = b_node->gap[--i]; in mab_mas_cp()
2065 struct maple_big_node *b_node, unsigned char offset_end) in mas_store_b_node() argument
2073 b_node->type = wr_mas->type; in mas_store_b_node()
2078 mas_mab_cp(mas, 0, slot - 1, b_node, 0); in mas_store_b_node()
2079 b_end = b_node->b_end; in mas_store_b_node()
2080 piv = b_node->pivot[b_end - 1]; in mas_store_b_node()
2086 b_node->slot[b_end] = wr_mas->content; in mas_store_b_node()
2088 b_node->gap[b_end] = mas->index - 1 - piv; in mas_store_b_node()
2089 b_node->pivot[b_end++] = mas->index - 1; in mas_store_b_node()
2094 b_node->slot[b_end] = wr_mas->entry; in mas_store_b_node()
2095 b_node->pivot[b_end] = mas->last; in mas_store_b_node()
2105 mas_bulk_rebalance(mas, b_node->b_end, wr_mas->type); in mas_store_b_node()
2111 b_node->slot[++b_end] = wr_mas->content; in mas_store_b_node()
2113 b_node->gap[b_end] = piv - mas->last + 1; in mas_store_b_node()
2114 b_node->pivot[b_end] = piv; in mas_store_b_node()
2122 mas_mab_cp(mas, slot, mas->end + 1, b_node, ++b_end); in mas_store_b_node()
2123 b_node->b_end--; in mas_store_b_node()
2127 b_node->b_end = b_end; in mas_store_b_node()
2345 *mas_new_ma_node(struct ma_state *mas, struct maple_big_node *b_node) in mas_new_ma_node() argument
2347 return mt_mk_node(ma_mnode_ptr(mas_pop_node(mas)), b_node->type); in mas_new_ma_node()
2363 struct maple_big_node *b_node, struct maple_enode **left, in mas_mab_to_node() argument
2368 unsigned char slot_count = mt_slots[b_node->type]; in mas_mab_to_node()
2370 *left = mas_new_ma_node(mas, b_node); in mas_mab_to_node()
2375 if (b_node->b_end < slot_count) { in mas_mab_to_node()
2376 split = b_node->b_end; in mas_mab_to_node()
2378 split = mab_calc_split(mas, b_node, mid_split); in mas_mab_to_node()
2379 *right = mas_new_ma_node(mas, b_node); in mas_mab_to_node()
2383 *middle = mas_new_ma_node(mas, b_node); in mas_mab_to_node()
2396 static inline void mab_set_b_end(struct maple_big_node *b_node, in mab_set_b_end() argument
2403 b_node->slot[b_node->b_end] = entry; in mab_set_b_end()
2405 b_node->gap[b_node->b_end] = mas_max_gap(mas); in mab_set_b_end()
2406 b_node->pivot[b_node->b_end++] = mas->max; in mab_set_b_end()
2950 struct maple_big_node *b_node) in mas_rebalance() argument
2954 unsigned char shift, b_end = ++b_node->b_end; in mas_rebalance()
2973 mast.bn = b_node; in mas_rebalance()
2979 mas_mab_cp(&r_mas, 0, mt_slot_count(r_mas.node), b_node, b_end); in mas_rebalance()
2984 mab_shift_right(b_node, shift); in mas_rebalance()
2986 mas_mab_cp(&l_mas, 0, shift - 1, b_node, 0); in mas_rebalance()
2987 b_node->b_end = shift + b_end; in mas_rebalance()
3292 static void mas_split(struct ma_state *mas, struct maple_big_node *b_node) in mas_split() argument
3328 mast.bn = b_node; in mas_split()
3331 if (mt_slots[b_node->type] > b_node->b_end) { in mas_split()
3337 l_mas.node = mas_new_ma_node(mas, b_node); in mas_split()
3338 r_mas.node = mas_new_ma_node(mas, b_node); in mas_split()
3353 split = mab_calc_split(mas, b_node, &mid_split); in mas_split()
3379 struct maple_big_node *b_node) in mas_commit_b_node() argument
3386 return mas_rebalance(wr_mas->mas, b_node); in mas_commit_b_node()
3388 return mas_split(wr_mas->mas, b_node); in mas_commit_b_node()
3707 struct maple_big_node b_node; in mas_wr_spanning_store() local
3771 memset(&b_node, 0, sizeof(struct maple_big_node)); in mas_wr_spanning_store()
3773 mas_store_b_node(&l_wr_mas, &b_node, l_mas.end); in mas_wr_spanning_store()
3777 &b_node, b_node.b_end + 1); in mas_wr_spanning_store()
3779 b_node.b_end++; in mas_wr_spanning_store()
3784 mast.bn = &b_node; in mas_wr_spanning_store()
4044 struct maple_big_node b_node; in mas_wr_bnode() local
4047 memset(&b_node, 0, sizeof(struct maple_big_node)); in mas_wr_bnode()
4048 mas_store_b_node(wr_mas, &b_node, wr_mas->offset_end); in mas_wr_bnode()
4049 mas_commit_b_node(wr_mas, &b_node); in mas_wr_bnode()