Lines Matching refs:b_node

1805 static inline void mab_shift_right(struct maple_big_node *b_node,  in mab_shift_right()  argument
1808 unsigned long size = b_node->b_end * sizeof(unsigned long); in mab_shift_right()
1810 memmove(b_node->pivot + shift, b_node->pivot, size); in mab_shift_right()
1811 memmove(b_node->slot + shift, b_node->slot, size); in mab_shift_right()
1812 if (b_node->type == maple_arange_64) in mab_shift_right()
1813 memmove(b_node->gap + shift, b_node->gap, size); in mab_shift_right()
1825 static inline bool mab_middle_node(struct maple_big_node *b_node, int split, in mab_middle_node() argument
1828 unsigned char size = b_node->b_end; in mab_middle_node()
1833 if (!b_node->slot[split] && (size >= 2 * slot_count - 1)) in mab_middle_node()
1847 static inline int mab_no_null_split(struct maple_big_node *b_node, in mab_no_null_split() argument
1850 if (!b_node->slot[split]) { in mab_no_null_split()
1856 (b_node->b_end - split) > (mt_min_slots[b_node->type])) in mab_no_null_split()
1943 unsigned char mas_end, struct maple_big_node *b_node, in mas_mab_cp() argument
1957 b_node->pivot[j] = pivots[i++]; in mas_mab_cp()
1965 b_node->pivot[j] = pivots[i]; in mas_mab_cp()
1966 if (unlikely(!b_node->pivot[j])) in mas_mab_cp()
1969 if (unlikely(mas->max == b_node->pivot[j])) in mas_mab_cp()
1974 b_node->pivot[j] = mas_safe_pivot(mas, pivots, i, mt); in mas_mab_cp()
1977 b_node->b_end = ++j; in mas_mab_cp()
1980 memcpy(b_node->slot + mab_start, slots + mas_start, sizeof(void *) * j); in mas_mab_cp()
1983 memcpy(b_node->gap + mab_start, gaps + mas_start, in mas_mab_cp()
2022 static inline void mab_mas_cp(struct maple_big_node *b_node, in mab_mas_cp() argument
2042 pivots[j++] = b_node->pivot[i++]; in mab_mas_cp()
2043 } while (i <= mab_end && likely(b_node->pivot[i])); in mab_mas_cp()
2045 memcpy(slots, b_node->slot + mab_start, in mab_mas_cp()
2049 mas->max = b_node->pivot[i - 1]; in mab_mas_cp()
2058 gaps[--j] = b_node->gap[--i]; in mab_mas_cp()
2102 struct maple_big_node *b_node, unsigned char offset_end) in mas_store_b_node() argument
2110 b_node->type = wr_mas->type; in mas_store_b_node()
2115 mas_mab_cp(mas, 0, slot - 1, b_node, 0); in mas_store_b_node()
2116 b_end = b_node->b_end; in mas_store_b_node()
2117 piv = b_node->pivot[b_end - 1]; in mas_store_b_node()
2123 b_node->slot[b_end] = wr_mas->content; in mas_store_b_node()
2125 b_node->gap[b_end] = mas->index - 1 - piv; in mas_store_b_node()
2126 b_node->pivot[b_end++] = mas->index - 1; in mas_store_b_node()
2131 b_node->slot[b_end] = wr_mas->entry; in mas_store_b_node()
2132 b_node->pivot[b_end] = mas->last; in mas_store_b_node()
2142 mas_bulk_rebalance(mas, b_node->b_end, wr_mas->type); in mas_store_b_node()
2148 b_node->slot[++b_end] = wr_mas->content; in mas_store_b_node()
2150 b_node->gap[b_end] = piv - mas->last + 1; in mas_store_b_node()
2151 b_node->pivot[b_end] = piv; in mas_store_b_node()
2159 mas_mab_cp(mas, slot, wr_mas->node_end + 1, b_node, ++b_end); in mas_store_b_node()
2160 b_node->b_end--; in mas_store_b_node()
2164 b_node->b_end = b_end; in mas_store_b_node()
2383 *mas_new_ma_node(struct ma_state *mas, struct maple_big_node *b_node) in mas_new_ma_node() argument
2385 return mt_mk_node(ma_mnode_ptr(mas_pop_node(mas)), b_node->type); in mas_new_ma_node()
2401 struct maple_big_node *b_node, struct maple_enode **left, in mas_mab_to_node() argument
2406 unsigned char slot_count = mt_slots[b_node->type]; in mas_mab_to_node()
2408 *left = mas_new_ma_node(mas, b_node); in mas_mab_to_node()
2413 if (b_node->b_end < slot_count) { in mas_mab_to_node()
2414 split = b_node->b_end; in mas_mab_to_node()
2416 split = mab_calc_split(mas, b_node, mid_split, min); in mas_mab_to_node()
2417 *right = mas_new_ma_node(mas, b_node); in mas_mab_to_node()
2421 *middle = mas_new_ma_node(mas, b_node); in mas_mab_to_node()
2434 static inline void mab_set_b_end(struct maple_big_node *b_node, in mab_set_b_end() argument
2441 b_node->slot[b_node->b_end] = entry; in mab_set_b_end()
2443 b_node->gap[b_node->b_end] = mas_max_gap(mas); in mab_set_b_end()
2444 b_node->pivot[b_node->b_end++] = mas->max; in mab_set_b_end()
2993 struct maple_big_node *b_node) in mas_rebalance() argument
2997 unsigned char shift, b_end = ++b_node->b_end; in mas_rebalance()
3019 mast.bn = b_node; in mas_rebalance()
3025 mas_mab_cp(&r_mas, 0, mt_slot_count(r_mas.node), b_node, b_end); in mas_rebalance()
3030 mab_shift_right(b_node, shift); in mas_rebalance()
3032 mas_mab_cp(&l_mas, 0, shift - 1, b_node, 0); in mas_rebalance()
3033 b_node->b_end = shift + b_end; in mas_rebalance()
3348 static int mas_split(struct ma_state *mas, struct maple_big_node *b_node) in mas_split() argument
3388 mast.bn = b_node; in mas_split()
3391 if (mt_slots[b_node->type] > b_node->b_end) { in mas_split()
3397 l_mas.node = mas_new_ma_node(mas, b_node); in mas_split()
3398 r_mas.node = mas_new_ma_node(mas, b_node); in mas_split()
3414 split = mab_calc_split(mas, b_node, &mid_split, prev_l_mas.min); in mas_split()
3468 struct maple_big_node *b_node, unsigned char end) in mas_commit_b_node() argument
3472 unsigned char b_end = b_node->b_end; in mas_commit_b_node()
3473 enum maple_type b_type = b_node->type; in mas_commit_b_node()
3479 return mas_rebalance(wr_mas->mas, b_node); in mas_commit_b_node()
3482 return mas_split(wr_mas->mas, b_node); in mas_commit_b_node()
3484 if (mas_reuse_node(wr_mas, b_node, end)) in mas_commit_b_node()
3494 mab_mas_cp(b_node, 0, b_end, wr_mas->mas, false); in mas_commit_b_node()
3825 struct maple_big_node b_node; in mas_wr_spanning_store() local
3892 memset(&b_node, 0, sizeof(struct maple_big_node)); in mas_wr_spanning_store()
3894 mas_store_b_node(&l_wr_mas, &b_node, l_wr_mas.node_end); in mas_wr_spanning_store()
3898 &b_node, b_node.b_end + 1); in mas_wr_spanning_store()
3900 b_node.b_end++; in mas_wr_spanning_store()
3905 mast.bn = &b_node; in mas_wr_spanning_store()
4193 struct maple_big_node b_node; in mas_wr_bnode() local
4196 memset(&b_node, 0, sizeof(struct maple_big_node)); in mas_wr_bnode()
4197 mas_store_b_node(wr_mas, &b_node, wr_mas->offset_end); in mas_wr_bnode()
4198 mas_commit_b_node(wr_mas, &b_node, wr_mas->node_end); in mas_wr_bnode()