Lines Matching refs:iter
231 struct radix_tree_iter *iter, void __rcu **slot);
247 const struct radix_tree_iter *iter, unsigned int tag);
262 struct radix_tree_iter *iter, gfp_t gfp,
274 * @iter: pointer to iterator state
279 radix_tree_iter_init(struct radix_tree_iter *iter, unsigned long start)
282 * Leave iter->tags uninitialized. radix_tree_next_chunk() will fill it
289 iter->index = 0;
290 iter->next_index = start;
298 * @iter: iterator state
303 * @iter->next_index. It returns a pointer to the chunk's first slot.
304 * Also it fills @iter with data about chunk: position in the tree (index),
308 struct radix_tree_iter *iter, unsigned flags);
313 * @iter: iterator state
317 * containing it and updates @iter to describe the entry. If @index is not
322 struct radix_tree_iter *iter, unsigned long index)
324 radix_tree_iter_init(iter, index);
325 return radix_tree_next_chunk(root, iter, RADIX_TREE_ITER_CONTIG);
330 * @iter: iterator state
338 void __rcu **radix_tree_iter_retry(struct radix_tree_iter *iter)
340 iter->next_index = iter->index;
341 iter->tags = 0;
346 __radix_tree_iter_add(struct radix_tree_iter *iter, unsigned long slots)
348 return iter->index + slots;
354 * @iter: iterator state
362 struct radix_tree_iter *iter);
367 * @iter: pointer to radix tree iterator
371 radix_tree_chunk_size(struct radix_tree_iter *iter)
373 return iter->next_index - iter->index;
380 * @iter: pointer to iterator state
384 * This function updates @iter->index in the case of a successful lookup.
385 * For tagged lookup it also eats @iter->tags.
391 * a) we are doing tagged iteration and iter->tags has been set to 0, or
392 * b) we are doing non-tagged iteration, and iter->index and iter->next_index
396 struct radix_tree_iter *iter, unsigned flags)
399 iter->tags >>= 1;
400 if (unlikely(!iter->tags))
402 if (likely(iter->tags & 1ul)) {
403 iter->index = __radix_tree_iter_add(iter, 1);
408 unsigned offset = __ffs(iter->tags);
410 iter->tags >>= offset++;
411 iter->index = __radix_tree_iter_add(iter, offset);
416 long count = radix_tree_chunk_size(iter);
420 iter->index = __radix_tree_iter_add(iter, 1);
426 iter->next_index = 0;
442 * @iter: the struct radix_tree_iter pointer
445 * @slot points to radix tree slot, @iter->index contains its index.
447 #define radix_tree_for_each_slot(slot, root, iter, start) \
448 for (slot = radix_tree_iter_init(iter, start) ; \
449 slot || (slot = radix_tree_next_chunk(root, iter, 0)) ; \
450 slot = radix_tree_next_slot(slot, iter, 0))
457 * @iter: the struct radix_tree_iter pointer
461 * @slot points to radix tree slot, @iter->index contains its index.
463 #define radix_tree_for_each_tagged(slot, root, iter, start, tag) \
464 for (slot = radix_tree_iter_init(iter, start) ; \
465 slot || (slot = radix_tree_next_chunk(root, iter, \
467 slot = radix_tree_next_slot(slot, iter, \