Lines Matching refs:mark
66 static inline void xa_mark_set(struct xarray *xa, xa_mark_t mark) in xa_mark_set() argument
68 if (!(xa->xa_flags & XA_FLAGS_MARK(mark))) in xa_mark_set()
69 xa->xa_flags |= XA_FLAGS_MARK(mark); in xa_mark_set()
72 static inline void xa_mark_clear(struct xarray *xa, xa_mark_t mark) in xa_mark_clear() argument
74 if (xa->xa_flags & XA_FLAGS_MARK(mark)) in xa_mark_clear()
75 xa->xa_flags &= ~(XA_FLAGS_MARK(mark)); in xa_mark_clear()
78 static inline unsigned long *node_marks(struct xa_node *node, xa_mark_t mark) in node_marks() argument
80 return node->marks[(__force unsigned)mark]; in node_marks()
84 unsigned int offset, xa_mark_t mark) in node_get_mark() argument
86 return test_bit(offset, node_marks(node, mark)); in node_get_mark()
91 xa_mark_t mark) in node_set_mark() argument
93 return __test_and_set_bit(offset, node_marks(node, mark)); in node_set_mark()
98 xa_mark_t mark) in node_clear_mark() argument
100 return __test_and_clear_bit(offset, node_marks(node, mark)); in node_clear_mark()
103 static inline bool node_any_mark(struct xa_node *node, xa_mark_t mark) in node_any_mark() argument
105 return !bitmap_empty(node_marks(node, mark), XA_CHUNK_SIZE); in node_any_mark()
108 static inline void node_mark_all(struct xa_node *node, xa_mark_t mark) in node_mark_all() argument
110 bitmap_fill(node_marks(node, mark), XA_CHUNK_SIZE); in node_mark_all()
113 #define mark_inc(mark) do { \ argument
114 mark = (__force xa_mark_t)((__force unsigned)(mark) + 1); \
126 unsigned int mark = 0; in xas_squash_marks() local
133 unsigned long *marks = xas->xa_node->marks[mark]; in xas_squash_marks()
138 } while (mark++ != (__force unsigned)XA_MARK_MAX); in xas_squash_marks()
581 xa_mark_t mark = 0; in xas_expand() local
595 if (xa_track_free(xa) && mark == XA_FREE_MARK) { in xas_expand()
601 } else if (xa_marked(xa, mark)) { in xas_expand()
602 node_set_mark(node, 0, mark); in xas_expand()
604 if (mark == XA_MARK_MAX) in xas_expand()
606 mark_inc(mark); in xas_expand()
859 bool xas_get_mark(const struct xa_state *xas, xa_mark_t mark) in xas_get_mark() argument
864 return xa_marked(xas->xa, mark); in xas_get_mark()
865 return node_get_mark(xas->xa_node, xas->xa_offset, mark); in xas_get_mark()
878 void xas_set_mark(const struct xa_state *xas, xa_mark_t mark) in xas_set_mark() argument
887 if (node_set_mark(node, offset, mark)) in xas_set_mark()
893 if (!xa_marked(xas->xa, mark)) in xas_set_mark()
894 xa_mark_set(xas->xa, mark); in xas_set_mark()
907 void xas_clear_mark(const struct xa_state *xas, xa_mark_t mark) in xas_clear_mark() argument
916 if (!node_clear_mark(node, offset, mark)) in xas_clear_mark()
918 if (node_any_mark(node, mark)) in xas_clear_mark()
925 if (xa_marked(xas->xa, mark)) in xas_clear_mark()
926 xa_mark_clear(xas->xa, mark); in xas_clear_mark()
943 xa_mark_t mark = 0; in xas_init_marks() local
946 if (xa_track_free(xas->xa) && mark == XA_FREE_MARK) in xas_init_marks()
947 xas_set_mark(xas, mark); in xas_init_marks()
949 xas_clear_mark(xas, mark); in xas_init_marks()
950 if (mark == XA_MARK_MAX) in xas_init_marks()
952 mark_inc(mark); in xas_init_marks()
961 xa_mark_t mark = XA_MARK_0; in node_get_marks() local
964 if (node_get_mark(node, offset, mark)) in node_get_marks()
965 marks |= 1 << (__force unsigned int)mark; in node_get_marks()
966 if (mark == XA_MARK_MAX) in node_get_marks()
968 mark_inc(mark); in node_get_marks()
977 xa_mark_t mark = XA_MARK_0; in node_set_marks() local
980 if (marks & (1 << (__force unsigned int)mark)) { in node_set_marks()
981 node_set_mark(node, offset, mark); in node_set_marks()
983 node_mark_all(child, mark); in node_set_marks()
985 if (mark == XA_MARK_MAX) in node_set_marks()
987 mark_inc(mark); in node_set_marks()
1308 void *xas_find_marked(struct xa_state *xas, unsigned long max, xa_mark_t mark) in xas_find_marked() argument
1329 if (xa_marked(xas->xa, mark)) in xas_find_marked()
1356 offset = xas_find_chunk(xas, advance, mark); in xas_find_marked()
1369 if (!entry && !(xa_track_free(xas->xa) && mark == XA_FREE_MARK)) in xas_find_marked()
1900 void __xa_set_mark(struct xarray *xa, unsigned long index, xa_mark_t mark) in __xa_set_mark() argument
1906 xas_set_mark(&xas, mark); in __xa_set_mark()
1918 void __xa_clear_mark(struct xarray *xa, unsigned long index, xa_mark_t mark) in __xa_clear_mark() argument
1924 xas_clear_mark(&xas, mark); in __xa_clear_mark()
1940 bool xa_get_mark(struct xarray *xa, unsigned long index, xa_mark_t mark) in xa_get_mark() argument
1947 while (xas_get_mark(&xas, mark)) { in xa_get_mark()
1970 void xa_set_mark(struct xarray *xa, unsigned long index, xa_mark_t mark) in xa_set_mark() argument
1973 __xa_set_mark(xa, index, mark); in xa_set_mark()
1988 void xa_clear_mark(struct xarray *xa, unsigned long index, xa_mark_t mark) in xa_clear_mark() argument
1991 __xa_clear_mark(xa, index, mark); in xa_clear_mark()
2114 unsigned long max, unsigned int n, xa_mark_t mark) in xas_extract_marked() argument
2120 xas_for_each_marked(xas, entry, max, mark) { in xas_extract_marked()