Lines Matching refs:b_node

1784 static inline void mab_shift_right(struct maple_big_node *b_node,  in mab_shift_right()  argument
1787 unsigned long size = b_node->b_end * sizeof(unsigned long); in mab_shift_right()
1789 memmove(b_node->pivot + shift, b_node->pivot, size); in mab_shift_right()
1790 memmove(b_node->slot + shift, b_node->slot, size); in mab_shift_right()
1791 if (b_node->type == maple_arange_64) in mab_shift_right()
1792 memmove(b_node->gap + shift, b_node->gap, size); in mab_shift_right()
1803 static inline bool mab_middle_node(struct maple_big_node *b_node, int split, in mab_middle_node() argument
1806 unsigned char size = b_node->b_end; in mab_middle_node()
1811 if (!b_node->slot[split] && (size >= 2 * slot_count - 1)) in mab_middle_node()
1825 static inline int mab_no_null_split(struct maple_big_node *b_node, in mab_no_null_split() argument
1828 if (!b_node->slot[split]) { in mab_no_null_split()
1834 (b_node->b_end - split) > (mt_min_slots[b_node->type])) in mab_no_null_split()
1922 unsigned char mas_end, struct maple_big_node *b_node, in mas_mab_cp() argument
1936 b_node->pivot[j] = pivots[i++]; in mas_mab_cp()
1944 b_node->pivot[j] = pivots[i]; in mas_mab_cp()
1945 if (unlikely(!b_node->pivot[j])) in mas_mab_cp()
1948 if (unlikely(mas->max == b_node->pivot[j])) in mas_mab_cp()
1953 b_node->pivot[j] = mas_safe_pivot(mas, pivots, i, mt); in mas_mab_cp()
1956 b_node->b_end = ++j; in mas_mab_cp()
1959 memcpy(b_node->slot + mab_start, slots + mas_start, sizeof(void *) * j); in mas_mab_cp()
1962 memcpy(b_node->gap + mab_start, gaps + mas_start, in mas_mab_cp()
1987 static inline void mab_mas_cp(struct maple_big_node *b_node, in mab_mas_cp() argument
2007 pivots[j++] = b_node->pivot[i++]; in mab_mas_cp()
2008 } while (i <= mab_end && likely(b_node->pivot[i])); in mab_mas_cp()
2010 memcpy(slots, b_node->slot + mab_start, in mab_mas_cp()
2014 mas->max = b_node->pivot[i - 1]; in mab_mas_cp()
2023 gaps[--j] = b_node->gap[--i]; in mab_mas_cp()
2067 struct maple_big_node *b_node, unsigned char offset_end) in mas_store_b_node() argument
2075 b_node->type = wr_mas->type; in mas_store_b_node()
2080 mas_mab_cp(mas, 0, slot - 1, b_node, 0); in mas_store_b_node()
2081 b_end = b_node->b_end; in mas_store_b_node()
2082 piv = b_node->pivot[b_end - 1]; in mas_store_b_node()
2088 b_node->slot[b_end] = wr_mas->content; in mas_store_b_node()
2090 b_node->gap[b_end] = mas->index - 1 - piv; in mas_store_b_node()
2091 b_node->pivot[b_end++] = mas->index - 1; in mas_store_b_node()
2096 b_node->slot[b_end] = wr_mas->entry; in mas_store_b_node()
2097 b_node->pivot[b_end] = mas->last; in mas_store_b_node()
2107 mas_bulk_rebalance(mas, b_node->b_end, wr_mas->type); in mas_store_b_node()
2113 b_node->slot[++b_end] = wr_mas->content; in mas_store_b_node()
2115 b_node->gap[b_end] = piv - mas->last + 1; in mas_store_b_node()
2116 b_node->pivot[b_end] = piv; in mas_store_b_node()
2124 mas_mab_cp(mas, slot, mas->end + 1, b_node, ++b_end); in mas_store_b_node()
2125 b_node->b_end--; in mas_store_b_node()
2129 b_node->b_end = b_end; in mas_store_b_node()
2349 *mas_new_ma_node(struct ma_state *mas, struct maple_big_node *b_node) in mas_new_ma_node() argument
2351 return mt_mk_node(ma_mnode_ptr(mas_pop_node(mas)), b_node->type); in mas_new_ma_node()
2367 struct maple_big_node *b_node, struct maple_enode **left, in mas_mab_to_node() argument
2372 unsigned char slot_count = mt_slots[b_node->type]; in mas_mab_to_node()
2374 *left = mas_new_ma_node(mas, b_node); in mas_mab_to_node()
2379 if (b_node->b_end < slot_count) { in mas_mab_to_node()
2380 split = b_node->b_end; in mas_mab_to_node()
2382 split = mab_calc_split(mas, b_node, mid_split, min); in mas_mab_to_node()
2383 *right = mas_new_ma_node(mas, b_node); in mas_mab_to_node()
2387 *middle = mas_new_ma_node(mas, b_node); in mas_mab_to_node()
2400 static inline void mab_set_b_end(struct maple_big_node *b_node, in mab_set_b_end() argument
2407 b_node->slot[b_node->b_end] = entry; in mab_set_b_end()
2409 b_node->gap[b_node->b_end] = mas_max_gap(mas); in mab_set_b_end()
2410 b_node->pivot[b_node->b_end++] = mas->max; in mab_set_b_end()
2954 struct maple_big_node *b_node) in mas_rebalance() argument
2958 unsigned char shift, b_end = ++b_node->b_end; in mas_rebalance()
2977 mast.bn = b_node; in mas_rebalance()
2983 mas_mab_cp(&r_mas, 0, mt_slot_count(r_mas.node), b_node, b_end); in mas_rebalance()
2988 mab_shift_right(b_node, shift); in mas_rebalance()
2990 mas_mab_cp(&l_mas, 0, shift - 1, b_node, 0); in mas_rebalance()
2991 b_node->b_end = shift + b_end; in mas_rebalance()
3299 static void mas_split(struct ma_state *mas, struct maple_big_node *b_node) in mas_split() argument
3335 mast.bn = b_node; in mas_split()
3338 if (mt_slots[b_node->type] > b_node->b_end) { in mas_split()
3344 l_mas.node = mas_new_ma_node(mas, b_node); in mas_split()
3345 r_mas.node = mas_new_ma_node(mas, b_node); in mas_split()
3360 split = mab_calc_split(mas, b_node, &mid_split, prev_l_mas.min); in mas_split()
3386 struct maple_big_node *b_node) in mas_commit_b_node() argument
3393 return mas_rebalance(wr_mas->mas, b_node); in mas_commit_b_node()
3395 return mas_split(wr_mas->mas, b_node); in mas_commit_b_node()
3701 struct maple_big_node b_node; in mas_wr_spanning_store() local
3765 memset(&b_node, 0, sizeof(struct maple_big_node)); in mas_wr_spanning_store()
3767 mas_store_b_node(&l_wr_mas, &b_node, l_mas.end); in mas_wr_spanning_store()
3771 &b_node, b_node.b_end + 1); in mas_wr_spanning_store()
3773 b_node.b_end++; in mas_wr_spanning_store()
3778 mast.bn = &b_node; in mas_wr_spanning_store()
4039 struct maple_big_node b_node; in mas_wr_bnode() local
4042 memset(&b_node, 0, sizeof(struct maple_big_node)); in mas_wr_bnode()
4043 mas_store_b_node(wr_mas, &b_node, wr_mas->offset_end); in mas_wr_bnode()
4044 mas_commit_b_node(wr_mas, &b_node); in mas_wr_bnode()