#include <linux/tracepoint.h>
struct ma_state;
-struct maple_subree_state;
-struct maple_big_node;
-TRACE_EVENT(mas_split,
+TRACE_EVENT(ma_op,
- TP_PROTO(struct ma_state *mas),
+ TP_PROTO(const char *fn, struct ma_state *mas),
- TP_ARGS(mas),
+ TP_ARGS(fn, mas),
TP_STRUCT__entry(
- __field(struct ma_state *, mas)
- __field(unsigned long, index)
- __field(unsigned long, last)
- ),
-
- TP_fast_assign(
- __entry->mas = mas;
- __entry->index = mas->index;
- __entry->last = mas->last;
- ),
-
- TP_printk("\t%lu-%lu",
- (unsigned long) __entry->index,
- (unsigned long) __entry->last
- )
-);
-
-TRACE_EVENT(mas_spanning_store,
-
- TP_PROTO(struct ma_state *mas),
-
- TP_ARGS(mas),
-
- TP_STRUCT__entry(
- __field(struct ma_state *, mas)
- __field(unsigned long, index)
- __field(unsigned long, last)
- ),
-
- TP_fast_assign(
- __entry->mas = mas;
- __entry->index = mas->index;
- __entry->last = mas->last;
- ),
-
- TP_printk("\t%lu-%lu",
- (unsigned long) __entry->index,
- (unsigned long) __entry->last
- )
-);
-
-TRACE_EVENT(mas_rebalance,
-
- TP_PROTO(struct ma_state *mas),
-
- TP_ARGS(mas),
-
- TP_STRUCT__entry(
- __field(struct ma_state *, mas)
- __field(unsigned long, index)
- __field(unsigned long, last)
- ),
-
- TP_fast_assign(
- __entry->mas = mas;
- __entry->index = mas->index;
- __entry->last = mas->last;
- ),
-
- TP_printk("\t%lu-%lu",
- (unsigned long) __entry->index,
- (unsigned long) __entry->last
- )
-);
-
-TRACE_EVENT(mas_spanning_rebalance,
-
- TP_PROTO(struct ma_state *mas),
-
- TP_ARGS(mas),
-
- TP_STRUCT__entry(
- __field(struct ma_state *, mas)
- __field(unsigned long, index)
- __field(unsigned long, last)
- ),
-
- TP_fast_assign(
- __entry->mas = mas;
- __entry->index = mas->index;
- __entry->last = mas->last;
- ),
-
- TP_printk("\t%lu-%lu",
- (unsigned long) __entry->index,
- (unsigned long) __entry->last
- )
-);
-
-TRACE_EVENT(mtree_load,
-
- TP_PROTO(struct ma_state *mas),
-
- TP_ARGS(mas),
-
- TP_STRUCT__entry(
- __field(struct ma_state *, mas)
+ __field(const char *, fn)
+ __field(unsigned long, min)
+ __field(unsigned long, max)
__field(unsigned long, index)
__field(unsigned long, last)
+ __field(void *, node)
),
TP_fast_assign(
- __entry->mas = mas;
+ __entry->fn = fn;
+ __entry->min = mas->min;
+ __entry->max = mas->max;
__entry->index = mas->index;
__entry->last = mas->last;
+ __entry->node = mas->node;
),
- TP_printk("\t%lu-%lu",
+ TP_printk("%s\tNode: %px (%lu %lu) range: %lu-%lu",
+ __entry->fn,
+ (void *) __entry->node,
+ (unsigned long) __entry->min,
+ (unsigned long) __entry->max,
(unsigned long) __entry->index,
(unsigned long) __entry->last
)
)
+TRACE_EVENT(ma_read,
-TRACE_EVENT(mtree_erase,
-
- TP_PROTO(struct ma_state *mas),
+ TP_PROTO(const char *fn, struct ma_state *mas),
- TP_ARGS(mas),
+ TP_ARGS(fn, mas),
TP_STRUCT__entry(
- __field(struct ma_state *, mas)
+ __field(const char *, fn)
+ __field(unsigned long, min)
+ __field(unsigned long, max)
__field(unsigned long, index)
__field(unsigned long, last)
+ __field(void *, node)
),
TP_fast_assign(
- __entry->mas = mas;
+ __entry->fn = fn;
+ __entry->min = mas->min;
+ __entry->max = mas->max;
__entry->index = mas->index;
__entry->last = mas->last;
+ __entry->node = mas->node;
),
- TP_printk("\t%lu-%lu",
+ TP_printk("%s\tNode: %px (%lu %lu) range: %lu-%lu",
+ __entry->fn,
+ (void *) __entry->node,
+ (unsigned long) __entry->min,
+ (unsigned long) __entry->max,
(unsigned long) __entry->index,
(unsigned long) __entry->last
)
)
-TRACE_EVENT(mtree_store_range,
-
- TP_PROTO(struct ma_state *mas, void *val),
-
- TP_ARGS(mas, val),
-
- TP_STRUCT__entry(
- __field(struct ma_state *, mas)
- __field(unsigned long, index)
- __field(unsigned long, last)
- __field(void *, val)
- ),
-
- TP_fast_assign(
- __entry->mas = mas;
- __entry->index = mas->index;
- __entry->last = mas->last;
- __entry->val = val;
- ),
-
- TP_printk("\t%lu-%lu => %px",
- (unsigned long) __entry->index,
- (unsigned long) __entry->last,
- (void *) __entry->val
- )
-)
-
-TRACE_EVENT(mas_is_span_wr,
+TRACE_EVENT(ma_write,
- TP_PROTO(struct ma_state *mas, unsigned long piv, void *val),
+ TP_PROTO(const char *fn, struct ma_state *mas, unsigned long piv,
+ void *val),
- TP_ARGS(mas, piv, val),
+ TP_ARGS(fn, mas, piv, val),
TP_STRUCT__entry(
- __field(struct ma_state *, mas)
+ __field(const char *, fn)
__field(unsigned long, min)
__field(unsigned long, max)
__field(unsigned long, index)
),
TP_fast_assign(
- __entry->mas = mas;
+ __entry->fn = fn;
__entry->min = mas->min;
__entry->max = mas->max;
__entry->index = mas->index;
__entry->node = mas->node;
),
- TP_printk("\t%px (%lu %lu): %lu-%lu (%lu) %px",
+ TP_printk("%s\tNode %px (%lu %lu) range:%lu-%lu piv (%lu) val %px",
+ __entry->fn,
(void *) __entry->node,
(unsigned long) __entry->min,
(unsigned long) __entry->max,
MA_STATE(l_mas, mas->tree, mas->index, mas->last);
MA_STATE(r_mas, mas->tree, mas->index, mas->last);
- trace_mas_rebalance(mas);
+ trace_ma_op(__func__, mas);
mas_node_count(mas, 1 + empty_count * 3);
if (mas_is_err(mas))
MA_STATE(prev_r_mas, mas->tree, mas->index, mas->last);
MA_TOPIARY(mat, mas->tree);
- trace_mas_split(mas);
+ trace_ma_op(__func__, mas);
mas->depth = mas_mt_height(mas);
/* Allocation failures will happen early. */
mas_node_count(mas, 1 + mas->depth * 2);
return false;
}
- trace_mas_is_span_wr(mas, piv, entry);
+ trace_ma_write(__func__, mas, piv, entry);
return true;
}
MA_STATE(l_mas, mas->tree, mas->index, mas->index);
MA_STATE(r_mas, mas->tree, mas->index, mas->index);
- trace_mas_spanning_store(mas);
+ trace_ma_op(__func__, mas);
if (unlikely(!mas->index && mas->last == ULONG_MAX))
return mas_new_root(mas, entry);
unsigned long range_max, range_min;
MA_STATE(mas, mt, index, index);
- trace_mtree_load(&mas);
+ trace_ma_read(__func__, &mas);
rcu_read_lock();
entry = mas_range_load(&mas, &range_min, &range_max);
rcu_read_unlock();
{
MA_STATE(mas, mt, index, last);
- trace_mtree_store_range(&mas, entry);
+ trace_ma_write(__func__, &mas, 0, entry);
if (WARN_ON_ONCE(xa_is_advanced(entry)))
return -EINVAL;
void *entry = NULL;
MA_STATE(mas, mt, index, index);
- trace_mtree_erase(&mas);
+ trace_ma_op(__func__, &mas);
mtree_lock(mt);
entry = mas_erase(&mas);