mirror of
https://github.com/torvalds/linux.git
synced 2026-07-30 03:01:41 +02:00
bcachefs: add eytzinger0_for_each_prev
Add an eytzinger0_for_each_prev() macro for iterating through an eytzinger array in reverse. Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com> Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
parent
e8a0966ffa
commit
dc5ceaaad8
|
|
@ -244,6 +244,11 @@ static inline unsigned inorder_to_eytzinger0(unsigned i, unsigned size)
|
|||
(_i) != -1; \
|
||||
(_i) = eytzinger0_next((_i), (_size)))
|
||||
|
||||
#define eytzinger0_for_each_prev(_i, _size) \
|
||||
for (unsigned (_i) = eytzinger0_last((_size)); \
|
||||
(_i) != -1; \
|
||||
(_i) = eytzinger0_prev((_i), (_size)))
|
||||
|
||||
/* return greatest node <= @search, or -1 if not found */
|
||||
static inline int eytzinger0_find_le(void *base, size_t nr, size_t size,
|
||||
cmp_func_t cmp, const void *search)
|
||||
|
|
|
|||
|
|
@ -769,6 +769,15 @@ void eytzinger0_test(void)
|
|||
inorder++;
|
||||
}
|
||||
BUG_ON(inorder != size);
|
||||
|
||||
inorder = size - 1;
|
||||
eytzinger0_for_each_prev(eytz, size) {
|
||||
BUG_ON(eytz != eytzinger0_first(size) &&
|
||||
eytzinger0_next(eytzinger0_prev(eytz, size), size) != eytz);
|
||||
|
||||
inorder--;
|
||||
}
|
||||
BUG_ON(inorder != -1);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user