Lines Matching full:start

36 #define START(node) ((node)->bn_start)  macro
50 xbitmap64_tree_iter_first(struct rb_root_cached *root, uint64_t start,
54 xbitmap64_tree_iter_next(struct xbitmap64_node *node, uint64_t start,
58 __bn_subtree_last, START, LAST, static inline __maybe_unused, in INTERVAL_TREE_DEFINE() argument
73 uint64_t start,
78 uint64_t last = start + len - 1;
80 while ((bn = xbitmap64_tree_iter_first(&bitmap->xb_root, start, last))) {
81 if (bn->bn_start < start && bn->bn_last > last) {
86 bn->bn_last = start - 1;
97 } else if (bn->bn_start < start) {
100 bn->bn_last = start - 1;
122 uint64_t start, in xbitmap64_set() argument
127 uint64_t last = start + len - 1; in xbitmap64_set()
131 left = xbitmap64_tree_iter_first(&bitmap->xb_root, start, last); in xbitmap64_set()
132 if (left && left->bn_start <= start && left->bn_last >= last) in xbitmap64_set()
137 error = xbitmap64_clear(bitmap, start, len); in xbitmap64_set()
142 if (start > 0) in xbitmap64_set()
143 left = xbitmap64_tree_iter_first(&bitmap->xb_root, start - 1, in xbitmap64_set()
144 start - 1); in xbitmap64_set()
145 ASSERT(!left || left->bn_last + 1 == start); in xbitmap64_set()
168 right->bn_start = start; in xbitmap64_set()
175 left->bn_start = start; in xbitmap64_set()
280 /* Is the start of the range set or clear? And for how long? */
284 uint64_t start, in xbitmap64_test() argument
288 uint64_t last = start + *len - 1; in xbitmap64_test()
290 bn = xbitmap64_tree_iter_first(&bitmap->xb_root, start, last); in xbitmap64_test()
293 if (bn->bn_start <= start) { in xbitmap64_test()
295 *len = bn->bn_last - start + 1; in xbitmap64_test()
298 *len = bn->bn_start - start; in xbitmap64_test()
330 xbitmap32_tree_iter_first(struct rb_root_cached *root, uint32_t start,
334 xbitmap32_tree_iter_next(struct xbitmap32_node *node, uint32_t start,
338 __bn_subtree_last, START, LAST, static inline __maybe_unused, in INTERVAL_TREE_DEFINE() argument
353 uint32_t start,
358 uint32_t last = start + len - 1;
360 while ((bn = xbitmap32_tree_iter_first(&bitmap->xb_root, start, last))) {
361 if (bn->bn_start < start && bn->bn_last > last) {
366 bn->bn_last = start - 1;
377 } else if (bn->bn_start < start) {
380 bn->bn_last = start - 1;
402 uint32_t start, in xbitmap32_set() argument
407 uint32_t last = start + len - 1; in xbitmap32_set()
411 left = xbitmap32_tree_iter_first(&bitmap->xb_root, start, last); in xbitmap32_set()
412 if (left && left->bn_start <= start && left->bn_last >= last) in xbitmap32_set()
417 error = xbitmap32_clear(bitmap, start, len); in xbitmap32_set()
422 if (start > 0) in xbitmap32_set()
423 left = xbitmap32_tree_iter_first(&bitmap->xb_root, start - 1, in xbitmap32_set()
424 start - 1); in xbitmap32_set()
425 ASSERT(!left || left->bn_last + 1 == start); in xbitmap32_set()
448 right->bn_start = start; in xbitmap32_set()
455 left->bn_start = start; in xbitmap32_set()
560 /* Is the start of the range set or clear? And for how long? */
564 uint32_t start, in xbitmap32_test() argument
568 uint32_t last = start + *len - 1; in xbitmap32_test()
570 bn = xbitmap32_tree_iter_first(&bitmap->xb_root, start, last); in xbitmap32_test()
573 if (bn->bn_start <= start) { in xbitmap32_test()
575 *len = bn->bn_last - start + 1; in xbitmap32_test()
578 *len = bn->bn_start - start; in xbitmap32_test()