Lines Matching full:mt
188 #define mt_lock_is_held(mt) lock_is_held(mt->ma_external_lock) argument
189 #define mt_set_external_lock(mt, lock) \ argument
190 (mt)->ma_external_lock = &(lock)->dep_map
193 #define mt_lock_is_held(mt) 1 argument
194 #define mt_set_external_lock(mt, lock) do { } while (0) argument
251 #define mtree_lock(mt) spin_lock((&(mt)->ma_lock)) argument
252 #define mtree_unlock(mt) spin_unlock((&(mt)->ma_lock)) argument
304 void *mtree_load(struct maple_tree *mt, unsigned long index);
306 int mtree_insert(struct maple_tree *mt, unsigned long index,
308 int mtree_insert_range(struct maple_tree *mt, unsigned long first,
310 int mtree_alloc_range(struct maple_tree *mt, unsigned long *startp,
313 int mtree_alloc_rrange(struct maple_tree *mt, unsigned long *startp,
317 int mtree_store_range(struct maple_tree *mt, unsigned long first,
319 int mtree_store(struct maple_tree *mt, unsigned long index,
321 void *mtree_erase(struct maple_tree *mt, unsigned long index);
323 void mtree_destroy(struct maple_tree *mt);
324 void __mt_destroy(struct maple_tree *mt);
328 * @mt: Maple Tree.
333 static inline bool mtree_empty(const struct maple_tree *mt) in mtree_empty() argument
335 return mt->ma_root == NULL; in mtree_empty()
427 #define MA_STATE(name, mt, first, end) \ argument
429 .tree = mt, \
559 static inline bool mt_external_lock(const struct maple_tree *mt) in mt_external_lock() argument
561 return (mt->ma_flags & MT_FLAGS_LOCK_MASK) == MT_FLAGS_LOCK_EXTERN; in mt_external_lock()
566 * @mt: Maple Tree
574 static inline void mt_init_flags(struct maple_tree *mt, unsigned int flags) in mt_init_flags() argument
576 mt->ma_flags = flags; in mt_init_flags()
577 if (!mt_external_lock(mt)) in mt_init_flags()
578 spin_lock_init(&mt->ma_lock); in mt_init_flags()
579 rcu_assign_pointer(mt->ma_root, NULL); in mt_init_flags()
584 * @mt: Maple Tree
590 static inline void mt_init(struct maple_tree *mt) in mt_init() argument
592 mt_init_flags(mt, 0); in mt_init()
595 static inline bool mt_in_rcu(struct maple_tree *mt) in mt_in_rcu() argument
600 return mt->ma_flags & MT_FLAGS_USE_RCU; in mt_in_rcu()
605 * @mt: The Maple Tree
607 static inline void mt_clear_in_rcu(struct maple_tree *mt) in mt_clear_in_rcu() argument
609 if (!mt_in_rcu(mt)) in mt_clear_in_rcu()
612 if (mt_external_lock(mt)) { in mt_clear_in_rcu()
613 BUG_ON(!mt_lock_is_held(mt)); in mt_clear_in_rcu()
614 mt->ma_flags &= ~MT_FLAGS_USE_RCU; in mt_clear_in_rcu()
616 mtree_lock(mt); in mt_clear_in_rcu()
617 mt->ma_flags &= ~MT_FLAGS_USE_RCU; in mt_clear_in_rcu()
618 mtree_unlock(mt); in mt_clear_in_rcu()
624 * @mt: The Maple Tree
626 static inline void mt_set_in_rcu(struct maple_tree *mt) in mt_set_in_rcu() argument
628 if (mt_in_rcu(mt)) in mt_set_in_rcu()
631 if (mt_external_lock(mt)) { in mt_set_in_rcu()
632 BUG_ON(!mt_lock_is_held(mt)); in mt_set_in_rcu()
633 mt->ma_flags |= MT_FLAGS_USE_RCU; in mt_set_in_rcu()
635 mtree_lock(mt); in mt_set_in_rcu()
636 mt->ma_flags |= MT_FLAGS_USE_RCU; in mt_set_in_rcu()
637 mtree_unlock(mt); in mt_set_in_rcu()
641 static inline unsigned int mt_height(const struct maple_tree *mt) in mt_height() argument
644 return (mt->ma_flags & MT_FLAGS_HEIGHT_MASK) >> MT_FLAGS_HEIGHT_OFFSET; in mt_height()
647 void *mt_find(struct maple_tree *mt, unsigned long *index, unsigned long max);
648 void *mt_find_after(struct maple_tree *mt, unsigned long *index,
650 void *mt_prev(struct maple_tree *mt, unsigned long index, unsigned long min);
651 void *mt_next(struct maple_tree *mt, unsigned long index, unsigned long max);
671 void mt_dump(const struct maple_tree *mt);
672 void mt_validate(struct maple_tree *mt);