Lines Matching defs:iter

435 static struct msc_block_desc *msc_iter_bdesc(struct msc_iter *iter)
437 return sg_virt(iter->block);
442 struct msc_iter *iter;
444 iter = kzalloc(sizeof(*iter), GFP_KERNEL);
445 if (!iter)
457 kfree(iter);
458 iter = ERR_PTR(-EBUSY);
462 iter->msc = msc;
464 list_add_tail(&iter->entry, &msc->iter_list);
468 return iter;
471 static void msc_iter_remove(struct msc_iter *iter, struct msc *msc)
474 list_del(&iter->entry);
477 kfree(iter);
480 static void msc_iter_block_start(struct msc_iter *iter)
482 if (iter->start_block)
485 iter->start_block = msc_win_oldest_sg(iter->win);
486 iter->block = iter->start_block;
487 iter->wrap_count = 0;
493 if (msc_block_wrapped(msc_iter_bdesc(iter)))
494 iter->wrap_count = 2;
498 static int msc_iter_win_start(struct msc_iter *iter, struct msc *msc)
501 if (iter->start_win)
504 iter->start_win = msc_oldest_window(msc);
505 if (!iter->start_win)
508 iter->win = iter->start_win;
509 iter->start_block = NULL;
511 msc_iter_block_start(iter);
516 static int msc_iter_win_advance(struct msc_iter *iter)
518 iter->win = msc_next_window(iter->win);
519 iter->start_block = NULL;
521 if (iter->win == iter->start_win) {
522 iter->eof++;
526 msc_iter_block_start(iter);
531 static int msc_iter_block_advance(struct msc_iter *iter)
533 iter->block_off = 0;
536 if (iter->wrap_count && iter->block == iter->start_block) {
537 iter->wrap_count--;
538 if (!iter->wrap_count)
540 return msc_iter_win_advance(iter);
544 if (!iter->wrap_count && msc_block_last_written(msc_iter_bdesc(iter)))
546 return msc_iter_win_advance(iter);
549 if (sg_is_last(iter->block))
550 iter->block = msc_win_base_sg(iter->win);
552 iter->block = sg_next(iter->block);
555 if (!iter->wrap_count && iter->block == iter->start_block)
556 return msc_iter_win_advance(iter);
563 * @iter: iterator structure
578 msc_buffer_iterate(struct msc_iter *iter, size_t size, void *data,
581 struct msc *msc = iter->msc;
585 if (iter->eof)
589 if (msc_iter_win_start(iter, msc))
593 unsigned long data_bytes = msc_data_sz(msc_iter_bdesc(iter));
594 void *src = (void *)msc_iter_bdesc(iter) + MSC_BDESC;
612 if (iter->block == iter->start_block && iter->wrap_count == 2) {
620 tocopy -= iter->block_off;
621 src += iter->block_off;
635 iter->block_off += copied;
636 iter->offset += copied;
642 if (msc_iter_block_advance(iter))
1238 struct msc_window *win, *iter;
1240 list_for_each_entry_safe(win, iter, &msc->win_list, entry)
1448 struct msc_iter *iter;
1453 iter = msc_iter_install(msc);
1454 if (IS_ERR(iter))
1455 return PTR_ERR(iter);
1457 file->private_data = iter;
1464 struct msc_iter *iter = file->private_data;
1465 struct msc *msc = iter->msc;
1467 msc_iter_remove(iter, msc);
1511 struct msc_iter *iter = file->private_data;
1512 struct msc *msc = iter->msc;
1544 ret = msc_buffer_iterate(iter, len, &u, msc_win_to_user);
1546 *ppos = iter->offset;
1563 struct msc_iter *iter = vma->vm_file->private_data;
1564 struct msc *msc = iter->msc;
1571 struct msc_iter *iter = vma->vm_file->private_data;
1572 struct msc *msc = iter->msc;
1596 struct msc_iter *iter = vmf->vma->vm_file->private_data;
1597 struct msc *msc = iter->msc;
1619 struct msc_iter *iter = vma->vm_file->private_data;
1620 struct msc *msc = iter->msc;