ma_state
struct ma_state *mas,
struct ma_state *mas;
struct ma_state name = { \
#define MA_WR_STATE(name, ma_state, wr_entry) \
.mas = ma_state, \
void *mas_walk(struct ma_state *mas);
void *mas_store(struct ma_state *mas, void *entry);
void *mas_erase(struct ma_state *mas);
int mas_store_gfp(struct ma_state *mas, void *entry, gfp_t gfp);
void mas_store_prealloc(struct ma_state *mas, void *entry);
void *mas_find(struct ma_state *mas, unsigned long max);
void *mas_find_range(struct ma_state *mas, unsigned long max);
void *mas_find_rev(struct ma_state *mas, unsigned long min);
void *mas_find_range_rev(struct ma_state *mas, unsigned long max);
int mas_preallocate(struct ma_state *mas, void *entry, gfp_t gfp);
int mas_alloc_cyclic(struct ma_state *mas, unsigned long *startp,
bool mas_nomem(struct ma_state *mas, gfp_t gfp);
void mas_pause(struct ma_state *mas);
void mas_destroy(struct ma_state *mas);
void *mas_prev(struct ma_state *mas, unsigned long min);
void *mas_prev_range(struct ma_state *mas, unsigned long max);
void *mas_next(struct ma_state *mas, unsigned long max);
void *mas_next_range(struct ma_state *mas, unsigned long max);
int mas_empty_area(struct ma_state *mas, unsigned long min, unsigned long max,
int mas_empty_area_rev(struct ma_state *mas, unsigned long min,
static inline void mas_init(struct ma_state *mas, struct maple_tree *tree,
memset(mas, 0, sizeof(struct ma_state));
static inline bool mas_is_active(struct ma_state *mas)
static inline bool mas_is_err(struct ma_state *mas)
static __always_inline void mas_reset(struct ma_state *mas)
void mas_dump(const struct ma_state *mas);
static inline void __mas_set_range(struct ma_state *mas, unsigned long start,
void mas_set_range(struct ma_state *mas, unsigned long start, unsigned long last)
static inline void mas_set(struct ma_state *mas, unsigned long index)
struct ma_state mas;
struct ma_state;
TP_PROTO(const char *fn, struct ma_state *mas),
TP_PROTO(const char *fn, struct ma_state *mas),
TP_PROTO(const char *fn, struct ma_state *mas, unsigned long piv,
static bool find_aligned_area(struct ma_state *mas, unsigned long section_size,
static void mas_cur_span(struct ma_state *mas, struct interval_tree_span_iter *state)
static __always_inline struct maple_node *mas_pop_node(struct ma_state *mas)
static inline void mas_alloc_nodes(struct ma_state *mas, gfp_t gfp)
static inline void mas_empty_nodes(struct ma_state *mas)
static inline void mas_free(struct ma_state *mas, struct maple_enode *used)
static inline struct maple_enode *mas_start(struct ma_state *mas)
static inline unsigned char mas_data_end(struct ma_state *mas)
static unsigned long mas_leaf_max_gap(struct ma_state *mas)
static inline unsigned long mas_max_gap(struct ma_state *mas)
static inline void mas_parent_gap(struct ma_state *mas, unsigned char offset,
static inline void mas_update_gap(struct ma_state *mas)
static inline void mas_adopt_children(struct ma_state *mas,
struct ma_state *orig_l; /* Original left side of subtree */
static inline void mas_put_in_tree(struct ma_state *mas,
struct ma_state *orig_r; /* Original right side of subtree */
struct ma_state *l; /* New left side of subtree */
struct ma_state *m; /* New middle of subtree (rare) */
static inline void mas_replace_node(struct ma_state *mas,
struct ma_state *r; /* New right side of subtree */
static inline bool mas_find_child(struct ma_state *mas, struct ma_state *child)
static inline int mab_calc_split(struct ma_state *mas,
static inline void mas_mab_cp(struct ma_state *mas, unsigned char mas_start,
struct ma_state *mas, bool new_max)
struct ma_state *mas = wr_mas->mas;
static inline bool mas_prev_sibling(struct ma_state *mas)
static inline bool mas_next_sibling(struct ma_state *mas)
static inline void mas_node_or_none(struct ma_state *mas,
struct ma_state *mas = wr_mas->mas;
struct ma_state r_tmp = *mast->orig_r;
struct ma_state l_tmp = *mast->orig_l;
*mas_new_ma_node(struct ma_state *mas, struct maple_big_node *b_node)
static inline unsigned char mas_mab_to_node(struct ma_state *mas,
struct ma_state *mas,
static unsigned int mas_mt_height(struct ma_state *mas)
static inline void mas_set_split_parent(struct ma_state *mas,
static inline void mas_topiary_node(struct ma_state *mas,
struct ma_state *tmp_mas, bool in_rcu)
static inline void mas_topiary_replace(struct ma_state *mas,
struct ma_state tmp[3], tmp_next[3];
static inline void mas_wmb_replace(struct ma_state *mas,
static inline void *mtree_range_walk(struct ma_state *mas)
static void mas_spanning_rebalance(struct ma_state *mas,
static __always_inline void mas_set_err(struct ma_state *mas, long err)
static __always_inline bool mas_is_ptr(const struct ma_state *mas)
static __always_inline bool mas_is_start(const struct ma_state *mas)
static inline void mas_rebalance(struct ma_state *mas,
static __always_inline bool mas_is_none(const struct ma_state *mas)
struct ma_state *mas)
struct ma_state *mas,
static __always_inline bool mas_is_paused(const struct ma_state *mas)
struct ma_state *mas, unsigned char split)
static __always_inline bool mas_is_overflow(struct ma_state *mas)
static inline bool mas_push_data(struct ma_state *mas,
static inline bool mas_is_underflow(struct ma_state *mas)
static void mas_split(struct ma_state *mas, struct maple_big_node *b_node)
static inline void mas_root_expand(struct ma_state *mas, void *entry)
static inline void mas_store_root(struct ma_state *mas, void *entry)
struct ma_state *mas = wr_mas->mas;
static inline struct maple_node *mas_mn(const struct ma_state *mas)
struct ma_state *mas = wr_mas->mas;
struct ma_state *r_mas = r_wr_mas->mas;
struct ma_state *l_mas = l_wr_mas->mas;
static inline void *mas_state_walk(struct ma_state *mas)
static inline void *mtree_lookup_walk(struct ma_state *mas)
static inline void mas_new_root(struct ma_state *mas, void *entry)
struct ma_state *mas;
struct ma_state *mas = wr_mas->mas;
struct ma_state *mas = wr_mas->mas;
struct ma_state *mas = wr_mas->mas;
struct ma_state *mas = wr_mas->mas;
struct ma_state *mas = wr_mas->mas;
struct ma_state *mas = wr_mas->mas;
struct ma_state *mas = wr_mas->mas;
struct ma_state *mas = wr_mas->mas;
static inline bool mas_is_root_limits(const struct ma_state *mas)
struct ma_state *mas = wr_mas->mas;
struct ma_state *mas = wr_mas->mas;
static inline void *mas_insert(struct ma_state *mas, void *entry)
int mas_alloc_cyclic(struct ma_state *mas, unsigned long *startp,
static __always_inline void mas_rewalk(struct ma_state *mas, unsigned long index)
static __always_inline bool mas_rewalk_if_dead(struct ma_state *mas,
static int mas_prev_node(struct ma_state *mas, unsigned long min)
static void *mas_prev_slot(struct ma_state *mas, unsigned long min, bool empty)
static int mas_next_node(struct ma_state *mas, struct maple_node *node,
static void *mas_next_slot(struct ma_state *mas, unsigned long max, bool empty)
static bool mas_rev_awalk(struct ma_state *mas, unsigned long size,
static inline bool mas_anode_descend(struct ma_state *mas, unsigned long size)
void *mas_walk(struct ma_state *mas)
static inline bool mas_rewind_node(struct ma_state *mas)
static inline bool mas_skip_node(struct ma_state *mas)
enum maple_type mas_parent_type(struct ma_state *mas, struct maple_enode *enode)
static inline void mas_awalk(struct ma_state *mas, unsigned long size)
static inline int mas_sparse_area(struct ma_state *mas, unsigned long min,
int mas_empty_area(struct ma_state *mas, unsigned long min,
int mas_empty_area_rev(struct ma_state *mas, unsigned long min,
void mas_set_parent(struct ma_state *mas, struct maple_enode *enode,
void *mas_store(struct ma_state *mas, void *entry)
int mas_store_gfp(struct ma_state *mas, void *entry, gfp_t gfp)
void mas_store_prealloc(struct ma_state *mas, void *entry)
int mas_preallocate(struct ma_state *mas, void *entry, gfp_t gfp)
void mas_destroy(struct ma_state *mas)
static void mas_may_activate(struct ma_state *mas)
static bool mas_next_setup(struct ma_state *mas, unsigned long max,
void *mas_next(struct ma_state *mas, unsigned long max)
void *mas_next_range(struct ma_state *mas, unsigned long max)
static bool mas_prev_setup(struct ma_state *mas, unsigned long min, void **entry)
void *mas_prev(struct ma_state *mas, unsigned long min)
void *mas_prev_range(struct ma_state *mas, unsigned long min)
void mas_pause(struct ma_state *mas)
static __always_inline bool mas_find_setup(struct ma_state *mas, unsigned long max, void **entry)
void *mas_find(struct ma_state *mas, unsigned long max)
void *mas_find_range(struct ma_state *mas, unsigned long max)
static bool mas_find_rev_setup(struct ma_state *mas, unsigned long min,
void *mas_find_rev(struct ma_state *mas, unsigned long min)
void *mas_find_range_rev(struct ma_state *mas, unsigned long min)
void *mas_erase(struct ma_state *mas)
bool mas_nomem(struct ma_state *mas, gfp_t gfp)
static void mas_dup_free(struct ma_state *mas)
static inline void mas_copy_node(struct ma_state *mas, struct ma_state *new_mas,
static inline void mas_dup_alloc(struct ma_state *mas, struct ma_state *new_mas,
static inline void mas_dup_build(struct ma_state *mas, struct ma_state *new_mas,
mas_safe_pivot(const struct ma_state *mas, unsigned long *pivots,
static inline struct maple_enode *mas_get_slot(struct ma_state *mas,
static void mas_dfs_postorder(struct ma_state *mas, unsigned long max)
mas_safe_min(struct ma_state *mas, unsigned long *pivots, unsigned char offset)
static void mas_validate_gaps(struct ma_state *mas)
static void mas_validate_parent_slot(struct ma_state *mas)
static void mas_validate_child_slot(struct ma_state *mas)
static void mas_validate_limits(struct ma_state *mas)
void mas_dump(const struct ma_state *mas)
static __always_inline void *mas_slot_locked(struct ma_state *mas,
static __always_inline void *mas_slot(struct ma_state *mas, void __rcu **slots,
static __always_inline void *mas_root(struct ma_state *mas)
static inline void *mas_root_locked(struct ma_state *mas)
static void mas_mat_destroy(struct ma_state *mas, struct ma_topiary *mat)
static inline void mas_descend(struct ma_state *mas)
static int mas_ascend(struct ma_state *mas)
static inline unsigned long mas_range_len(struct ma_state *mas)
static bool within_range(struct execmem_range *range, struct ma_state *mas,
static int __execmem_cache_free(struct ma_state *mas, void *ptr, gfp_t gfp_mask)
struct ma_state *mas = unmap->mas;
struct ma_state *mas_detach, bool mm_wr_locked)
struct ma_state *mas_detach)
struct ma_state *mas_detach)
static void reattach_vmas(struct ma_state *mas_detach)
struct ma_state *mas_detach)
struct ma_state *mas_detach)
struct ma_state *mas = &vms->vmi->mas;
struct ma_state mas_detach;
struct ma_state *mas; /* the maple state point to the first vma */
int mas_ce2_over_count(struct ma_state *mas_start, struct ma_state *mas_end,
static void mas_dfs_preorder(struct ma_state *mas)
struct ma_state *mas = wr_mas->mas;
static int mas_allocated(struct ma_state *mas)
struct ma_state tmp;
static __init void mas_subtree_max_range(struct ma_state *mas)
static unsigned long get_last_index(struct ma_state *mas)
static inline void mas_node_walk(struct ma_state *mas, struct maple_node *node,
static inline bool mas_descend_walk(struct ma_state *mas,
static inline bool mas_tree_walk(struct ma_state *mas, unsigned long *range_min,
static inline void *mas_range_load(struct ma_state *mas,
struct ma_state mas;