Lines Matching refs:b_node

1625 static inline void mab_shift_right(struct maple_big_node *b_node,  in mab_shift_right()  argument
1628 unsigned long size = b_node->b_end * sizeof(unsigned long); in mab_shift_right()
1630 memmove(b_node->pivot + shift, b_node->pivot, size); in mab_shift_right()
1631 memmove(b_node->slot + shift, b_node->slot, size); in mab_shift_right()
1632 if (b_node->type == maple_arange_64) in mab_shift_right()
1633 memmove(b_node->gap + shift, b_node->gap, size); in mab_shift_right()
1644 static inline bool mab_middle_node(struct maple_big_node *b_node, int split, in mab_middle_node() argument
1647 unsigned char size = b_node->b_end; in mab_middle_node()
1652 if (!b_node->slot[split] && (size >= 2 * slot_count - 1)) in mab_middle_node()
1666 static inline int mab_no_null_split(struct maple_big_node *b_node, in mab_no_null_split() argument
1669 if (!b_node->slot[split]) { in mab_no_null_split()
1675 (b_node->b_end - split) > (mt_min_slots[b_node->type])) in mab_no_null_split()
1738 unsigned char mas_end, struct maple_big_node *b_node, in mas_mab_cp() argument
1752 b_node->pivot[j] = pivots[i++]; in mas_mab_cp()
1760 b_node->pivot[j] = pivots[i]; in mas_mab_cp()
1761 if (unlikely(!b_node->pivot[j])) in mas_mab_cp()
1764 if (unlikely(mas->max == b_node->pivot[j])) in mas_mab_cp()
1768 b_node->pivot[j] = mas_safe_pivot(mas, pivots, i, mt); in mas_mab_cp()
1771 b_node->b_end = ++j; in mas_mab_cp()
1774 memcpy(b_node->slot + mab_start, slots + mas_start, sizeof(void *) * j); in mas_mab_cp()
1777 memcpy(b_node->gap + mab_start, gaps + mas_start, in mas_mab_cp()
1802 static inline void mab_mas_cp(struct maple_big_node *b_node, in mab_mas_cp() argument
1822 pivots[j++] = b_node->pivot[i++]; in mab_mas_cp()
1823 } while (i <= mab_end && likely(b_node->pivot[i])); in mab_mas_cp()
1825 memcpy(slots, b_node->slot + mab_start, in mab_mas_cp()
1829 mas->max = b_node->pivot[i - 1]; in mab_mas_cp()
1838 gaps[--j] = b_node->gap[--i]; in mab_mas_cp()
1861 struct maple_big_node *b_node, unsigned char offset_end) in mas_store_b_node() argument
1869 b_node->type = wr_mas->type; in mas_store_b_node()
1874 mas_mab_cp(mas, 0, slot - 1, b_node, 0); in mas_store_b_node()
1875 b_end = b_node->b_end; in mas_store_b_node()
1876 piv = b_node->pivot[b_end - 1]; in mas_store_b_node()
1882 b_node->slot[b_end] = wr_mas->content; in mas_store_b_node()
1884 b_node->gap[b_end] = mas->index - 1 - piv; in mas_store_b_node()
1885 b_node->pivot[b_end++] = mas->index - 1; in mas_store_b_node()
1890 b_node->slot[b_end] = wr_mas->entry; in mas_store_b_node()
1891 b_node->pivot[b_end] = mas->last; in mas_store_b_node()
1904 b_node->slot[++b_end] = wr_mas->content; in mas_store_b_node()
1906 b_node->gap[b_end] = piv - mas->last + 1; in mas_store_b_node()
1907 b_node->pivot[b_end] = piv; in mas_store_b_node()
1915 mas_mab_cp(mas, slot, mas->end + 1, b_node, ++b_end); in mas_store_b_node()
1916 b_node->b_end--; in mas_store_b_node()
1920 b_node->b_end = b_end; in mas_store_b_node()
2138 *mas_new_ma_node(struct ma_state *mas, struct maple_big_node *b_node) in mas_new_ma_node() argument
2140 return mt_mk_node(ma_mnode_ptr(mas_pop_node(mas)), b_node->type); in mas_new_ma_node()
2156 struct maple_big_node *b_node, struct maple_enode **left, in mas_mab_to_node() argument
2161 unsigned char slot_count = mt_slots[b_node->type]; in mas_mab_to_node()
2163 *left = mas_new_ma_node(mas, b_node); in mas_mab_to_node()
2168 if (b_node->b_end < slot_count) { in mas_mab_to_node()
2169 split = b_node->b_end; in mas_mab_to_node()
2171 split = mab_calc_split(mas, b_node, mid_split); in mas_mab_to_node()
2172 *right = mas_new_ma_node(mas, b_node); in mas_mab_to_node()
2176 *middle = mas_new_ma_node(mas, b_node); in mas_mab_to_node()
2189 static inline void mab_set_b_end(struct maple_big_node *b_node, in mab_set_b_end() argument
2196 b_node->slot[b_node->b_end] = entry; in mab_set_b_end()
2198 b_node->gap[b_node->b_end] = mas_max_gap(mas); in mab_set_b_end()
2199 b_node->pivot[b_node->b_end++] = mas->max; in mab_set_b_end()
2752 struct maple_big_node *b_node) in mas_rebalance() argument
2756 unsigned char shift, b_end = ++b_node->b_end; in mas_rebalance()
2775 mast.bn = b_node; in mas_rebalance()
2781 mas_mab_cp(&r_mas, 0, mt_slot_count(r_mas.node), b_node, b_end); in mas_rebalance()
2786 mab_shift_right(b_node, shift); in mas_rebalance()
2788 mas_mab_cp(&l_mas, 0, shift - 1, b_node, 0); in mas_rebalance()
2789 b_node->b_end = shift + b_end; in mas_rebalance()
2972 static void mas_split(struct ma_state *mas, struct maple_big_node *b_node) in mas_split() argument
3008 mast.bn = b_node; in mas_split()
3011 if (mt_slots[b_node->type] > b_node->b_end) { in mas_split()
3017 l_mas.node = mas_new_ma_node(mas, b_node); in mas_split()
3018 r_mas.node = mas_new_ma_node(mas, b_node); in mas_split()
3037 split = mab_calc_split(mas, b_node, &mid_split); in mas_split()
3063 struct maple_big_node *b_node) in mas_commit_b_node() argument
3070 return mas_rebalance(wr_mas->mas, b_node); in mas_commit_b_node()
3072 return mas_split(wr_mas->mas, b_node); in mas_commit_b_node()
3398 struct maple_big_node b_node; in mas_wr_spanning_store() local
3462 memset(&b_node, 0, sizeof(struct maple_big_node)); in mas_wr_spanning_store()
3464 mas_store_b_node(&l_wr_mas, &b_node, l_mas.end); in mas_wr_spanning_store()
3468 &b_node, b_node.b_end + 1); in mas_wr_spanning_store()
3470 b_node.b_end++; in mas_wr_spanning_store()
3475 mast.bn = &b_node; in mas_wr_spanning_store()
3734 struct maple_big_node b_node; in mas_wr_bnode() local
3737 memset(&b_node, 0, sizeof(struct maple_big_node)); in mas_wr_bnode()
3738 mas_store_b_node(wr_mas, &b_node, wr_mas->offset_end); in mas_wr_bnode()
3739 mas_commit_b_node(wr_mas, &b_node); in mas_wr_bnode()