}
static inline unsigned long ma_get_pivot(const struct maple_node *mn,
- unsigned char slot, enum maple_type type)
+ unsigned char piv, enum maple_type type)
{
switch (type) {
case maple_arange_64:
- return mn->ma64.pivot[slot];
+ return mn->ma64.pivot[piv];
case maple_range_64:
case maple_leaf_64:
- return mn->mr64.pivot[slot];
+ return mn->mr64.pivot[piv];
case maple_sparse_6:
return mn->ms6.pivot;
case maple_sparse_9:
- return mn->ms9.pivot[slot];
+ return mn->ms9.pivot[piv];
case maple_sparse_16:
- return mn->ms16.pivot[slot];
+ return mn->ms16.pivot[piv];
case maple_sparse_21:
- return mn->ms21.pivot[slot];
+ return mn->ms21.pivot[piv];
case maple_sparse_32:
- return mn->ms32.pivot[slot];
+ return mn->ms32.pivot[piv];
case maple_sparse_64:
- return mn->ms64.pivot[slot];
+ return mn->ms64.pivot[piv];
case maple_range_16:
case maple_leaf_16:
- return mn->mr16.pivot[slot];
+ return mn->mr16.pivot[piv];
case maple_range_32:
case maple_leaf_32:
- return mn->mr32.pivot[slot];
+ return mn->mr32.pivot[piv];
case maple_dense:
default:
return 0;
}
static inline unsigned long _mte_get_pivot(const struct maple_enode *mn,
- unsigned char slot, enum maple_type type)
+ unsigned char piv, enum maple_type type)
{
- return ma_get_pivot(mte_to_node(mn), slot, type);
+ return ma_get_pivot(mte_to_node(mn), piv, type);
}
static inline unsigned long mte_get_pivot(const struct maple_enode *mn,
- unsigned char slot)
+ unsigned char piv)
{
- return _mte_get_pivot(mn, slot, mte_node_type(mn));
+ return _mte_get_pivot(mn, piv, mte_node_type(mn));
}
-static inline unsigned long _mas_get_safe_pivot(const struct ma_state *mas,
- unsigned char slot, enum maple_type type)
+static inline unsigned long _mas_safe_pivot(const struct ma_state *mas,
+ unsigned char piv, enum maple_type type)
{
- if (slot >= mt_pivots[type])
+ if (piv >= mt_pivots[type])
return mas->max;
- return _mte_get_pivot(mas->node, slot, type);
+ return _mte_get_pivot(mas->node, piv, type);
}
/*
- * mas_get_safe_pivot() - Return the pivot or the mas->max.
+ * mas_safe_pivot() - Return the pivot or the mas->max.
+ * @mas: The maple state.
+ * @piv: the pivot location.
*
- * Return: The pivot (including mas->max for the final slot)
+ * Return: The pivot (including mas->max for the final piv)
*/
-static inline unsigned long mas_get_safe_pivot(const struct ma_state *mas,
- unsigned char slot)
+static inline unsigned long mas_safe_pivot(const struct ma_state *mas,
+ unsigned char piv)
{
enum maple_type type = mte_node_type(mas->node);
- return _mas_get_safe_pivot(mas, slot, type);
+ return _mas_safe_pivot(mas, piv, type);
}
-static inline unsigned long mas_get_safe_lower_bound(struct ma_state *mas,
- unsigned char slot)
+static inline unsigned long mas_safe_min(struct ma_state *mas,
+ unsigned char piv)
{
- if (!slot)
+ if (!piv)
return mas->min;
- return mas_get_safe_pivot(mas, slot - 1) + 1;
+ return mas_safe_pivot(mas, piv - 1) + 1;
}
-static inline void ma_set_pivot(struct maple_node *mn, unsigned char slot,
+static inline void ma_set_pivot(struct maple_node *mn, unsigned char piv,
enum maple_type type, unsigned long val)
{
- BUG_ON(slot >= mt_pivots[type]);
+ BUG_ON(piv >= mt_pivots[type]);
switch (type) {
default:
case maple_range_64:
case maple_leaf_64:
- (&mn->mr64)->pivot[slot] = val;
+ (&mn->mr64)->pivot[piv] = val;
break;
case maple_arange_64:
- (&mn->ma64)->pivot[slot] = val;
+ (&mn->ma64)->pivot[piv] = val;
case maple_dense:
break;
case maple_sparse_6:
(&mn->ms6)->pivot = val;
break;
case maple_sparse_9:
- (&mn->ms9)->pivot[slot] = val;
+ (&mn->ms9)->pivot[piv] = val;
break;
case maple_sparse_16:
- (&mn->ms16)->pivot[slot] = val;
+ (&mn->ms16)->pivot[piv] = val;
break;
case maple_sparse_21:
- (&mn->ms21)->pivot[slot] = val;
+ (&mn->ms21)->pivot[piv] = val;
break;
case maple_sparse_32:
- (&mn->ms32)->pivot[slot] = val;
+ (&mn->ms32)->pivot[piv] = val;
break;
case maple_sparse_64:
- (&mn->ms64)->pivot[slot] = val;
+ (&mn->ms64)->pivot[piv] = val;
break;
case maple_range_16:
case maple_leaf_16:
- (&mn->mr16)->pivot[slot] = val;
+ (&mn->mr16)->pivot[piv] = val;
break;
case maple_range_32:
case maple_leaf_32:
- (&mn->mr32)->pivot[slot] = val;
+ (&mn->mr32)->pivot[piv] = val;
break;
}
}
-static inline void mte_set_pivot(struct maple_enode *mn, unsigned char slot,
+static inline void mte_set_pivot(struct maple_enode *mn, unsigned char piv,
unsigned long val)
{
- return ma_set_pivot(mte_to_node(mn), slot, mte_node_type(mn), val);
+ return ma_set_pivot(mte_to_node(mn), piv, mte_node_type(mn), val);
}
static inline void __rcu **ma_get_slots(struct maple_node *mn,
unsigned char slot = mas_offset(mas);
if (slot)
- mas->min = mas_get_safe_pivot(mas, slot - 1) + 1;
- mas->max = mas_get_safe_pivot(mas, slot);
+ mas->min = mas_safe_pivot(mas, slot - 1) + 1;
+ mas->max = mas_safe_pivot(mas, slot);
mas->node = mas_get_rcu_slot(mas, mas_offset(mas));
}
unsigned long piv = mas->min;
while (slot < mt_slots[type]) {
- piv = _mas_get_safe_pivot(mas, slot, type);
+ piv = _mas_safe_pivot(mas, slot, type);
if (piv >= mas->max)
break;
slot++;
pstart = mas->min;
for (i = 0; i < mt_slots[mt]; i++) {
- pend = mas_get_safe_pivot(mas, i);
+ pend = mas_safe_pivot(mas, i);
if (!pend && i)
pend = mas->max;
while (++slot < count) {
struct maple_enode *mn;
- pivot = mas_get_safe_pivot(mas, slot);
+ pivot = mas_safe_pivot(mas, slot);
if (pivot > limit)
goto no_entry;
mas_first_node(mas, limit);
if (mas_is_none(mas))
return limit;
- return mas_get_safe_pivot(mas,
+ return mas_safe_pivot(mas,
mas_offset(mas));
}
b_node->gap[j] = mte_get_gap(mas->node, i);
if (i < mt_pivot_count(mas->node))
- b_node->pivot[j] = mas_get_safe_pivot(mas, i);
+ b_node->pivot[j] = mas_safe_pivot(mas, i);
else
b_node->pivot[j] = mas->max;
b_node->pivot[b_end] = mas->last;
// Handle range overlap end.
- piv = mas_get_safe_pivot(mas, slot);
+ piv = mas_safe_pivot(mas, slot);
if (piv > mas->last) {
b_node->slot[++b_end] = contents;
if (!contents)
// Handle range overwrites
do {
- piv = mas_get_safe_pivot(mas, ++slot);
+ piv = mas_safe_pivot(mas, ++slot);
} while ((piv <= mas->last) && (slot <= end));
// Copy end data to the end of the node.
switch (type) {
default:
for (i = mas_offset(mas); i < mt_slots[type]; i++) {
- pivot = _mas_get_safe_pivot(mas, i, type);
+ pivot = _mas_safe_pivot(mas, i, type);
if (!pivot && i) {
if (mas->max < mas->index) {
unsigned char r_slot = mas_offset(r_mas);
unsigned char cp_r_slot = r_slot;
void *content = mas_get_rcu_slot(l_mas, l_slot);
- unsigned long range_max = mas_get_safe_pivot(r_mas, r_slot);
+ unsigned long range_max = mas_safe_pivot(r_mas, r_slot);
unsigned long range_min = l_mas->min;
if (l_slot)
- range_min = mas_get_safe_pivot(l_mas, l_slot - 1) + 1;
+ range_min = mas_safe_pivot(l_mas, l_slot - 1) + 1;
if (!content)
l_mas->index = range_min;
if ((l_mas->index == range_min) &&
l_slot && !mas_get_rcu_slot(l_mas, l_slot - 1)) {
if (l_slot > 1)
- l_mas->index = mas_get_safe_pivot(l_mas, l_slot - 2) + 1;
+ l_mas->index = mas_safe_pivot(l_mas, l_slot - 2) + 1;
else
l_mas->index = l_mas->min;
mas_set_offset(l_mas, l_slot - 1);
if (r_mas->last == range_max &&
r_mas->last < r_mas->max && !mas_get_rcu_slot(r_mas, r_slot + 1)) {
- r_mas->last = mas_get_safe_pivot(r_mas, r_slot + 1);
+ r_mas->last = mas_safe_pivot(r_mas, r_slot + 1);
cp_r_slot++;
}
struct maple_enode *mn;
int level;
- start_piv = mas_get_safe_pivot(mas, slot);
+ start_piv = mas_safe_pivot(mas, slot);
restart_prev_node:
level = 0;
if (mte_is_root(mas->node) || mas->node == MAS_NONE)
slot--;
do {
- pivot = mas_get_safe_pivot(mas, slot);
+ pivot = mas_safe_pivot(mas, slot);
- min = mas_get_safe_lower_bound(mas, slot);
+ min = mas_safe_min(mas, slot);
if (pivot < limit)
goto no_entry;
mn = mas->node;
slot = mas_offset(mas);
- start_piv = mas_get_safe_pivot(mas, slot);
+ start_piv = mas_safe_pivot(mas, slot);
level++;
mas_ascend(mas);
goto restart_next_node;
count = mt_slot_count(mas->node);
- prev_piv = mas_get_safe_pivot(mas, slot);
+ prev_piv = mas_safe_pivot(mas, slot);
while (++slot < count) {
- unsigned long pivot = mas_get_safe_pivot(mas, slot);
+ unsigned long pivot = mas_safe_pivot(mas, slot);
if (prev_piv > max)
goto no_entry;
slot--;
do {
- pivot = mas_get_safe_pivot(mas, slot);
+ pivot = mas_safe_pivot(mas, slot);
if (pivot < limit)
return false;
unsigned char count = mt_slot_count(mas->node);
void *entry;
- r_start = mas_get_safe_lower_bound(mas, slot);
+ r_start = mas_safe_min(mas, slot);
while (slot < count) {
- pivot = mas_get_safe_pivot(mas, slot);
+ pivot = mas_safe_pivot(mas, slot);
if (pivot > mas->max) // possibly a retry.
goto no_entry;
mas->last = max;
slot = mas_offset(mas);
- mas->index = mas_get_safe_lower_bound(mas, slot);
+ mas->index = mas_safe_min(mas, slot);
return mas_get_rcu_slot(mas, mas_offset(mas));
}
unsigned long gap = 0;
bool found = false;
- max = _mas_get_safe_pivot(mas, slot, type);
+ max = _mas_safe_pivot(mas, slot, type);
switch (type) {
case maple_leaf_64:
default:
do {
- min = mas_get_safe_lower_bound(mas, slot);
+ min = mas_safe_min(mas, slot);
/* last is below this range */
if (mas->last < min)
goto next_slot;
mas->node = next;
slot = mas_data_end(mas);
- max = mas_get_safe_pivot(mas, slot);
+ max = mas_safe_pivot(mas, slot);
}
mas_set_offset(mas, slot);
slot = mas_offset(mas);
fallthrough;
case maple_leaf_64:
- min = mas_get_safe_lower_bound(mas, slot);
+ min = mas_safe_min(mas, slot);
for (; slot <= pivot_cnt; slot++) {
- pivot = _mas_get_safe_pivot(mas, slot, type);
+ pivot = _mas_safe_pivot(mas, slot, type);
if (slot && !pivot)
break;
* calculation, so fix the ma_state here
*/
mas_ascend(mas);
- mas->max = mas_get_safe_pivot(mas, pslot);
- mas->min = mas_get_safe_lower_bound(mas, pslot);
+ mas->max = mas_safe_pivot(mas, pslot);
+ mas->min = mas_safe_min(mas, pslot);
mas->node = mn;
mas_set_offset(mas, slot);
_mas_store(mas, entry, false);
min = mte_get_pivot(mas->node, slot - 1) + 1;
mas->min = min;
- mas->max = mas_get_safe_pivot(mas, slot);
+ mas->max = mas_safe_pivot(mas, slot);
if (mas->index < min)
mas->index = min;
}
for (i = 0; i < mt_slot_count(mte); i++) {
- p_end = mas_get_safe_pivot(mas, i);
+ p_end = mas_safe_pivot(mas, i);
if (!p_end && i)
p_end = mas->max;
return; // all limits are fine here.
for (i = 0; i < mt_slot_count(mas->node); i++) {
- unsigned long piv = mas_get_safe_pivot(mas, i);
+ unsigned long piv = mas_safe_pivot(mas, i);
if (!piv)
break;