Lines Matching refs:rp
759 struct cache_reader *rp = filp->private_data; in cache_read() local
772 while (rp->q.list.next != &cd->queue && in cache_read()
773 list_entry(rp->q.list.next, struct cache_queue, list) in cache_read()
775 struct list_head *next = rp->q.list.next; in cache_read()
776 list_move(&rp->q.list, next); in cache_read()
778 if (rp->q.list.next == &cd->queue) { in cache_read()
781 WARN_ON_ONCE(rp->offset); in cache_read()
784 rq = container_of(rp->q.list.next, struct cache_request, q.list); in cache_read()
786 if (rp->offset == 0) in cache_read()
797 if (rp->offset == 0 && !test_bit(CACHE_PENDING, &rq->item->flags)) { in cache_read()
800 list_move(&rp->q.list, &rq->q.list); in cache_read()
803 if (rp->offset + count > rq->len) in cache_read()
804 count = rq->len - rp->offset; in cache_read()
806 if (copy_to_user(buf, rq->buf + rp->offset, count)) in cache_read()
808 rp->offset += count; in cache_read()
809 if (rp->offset >= rq->len) { in cache_read()
810 rp->offset = 0; in cache_read()
812 list_move(&rp->q.list, &rq->q.list); in cache_read()
818 if (rp->offset == 0) { in cache_read()
918 struct cache_reader *rp = filp->private_data; in cache_poll() local
926 if (!rp) in cache_poll()
931 for (cq= &rp->q; &cq->list != &cd->queue; in cache_poll()
946 struct cache_reader *rp = filp->private_data; in cache_ioctl() local
949 if (cmd != FIONREAD || !rp) in cache_ioctl()
957 for (cq= &rp->q; &cq->list != &cd->queue; in cache_ioctl()
962 len = cr->len - rp->offset; in cache_ioctl()
973 struct cache_reader *rp = NULL; in cache_open() local
979 rp = kmalloc(sizeof(*rp), GFP_KERNEL); in cache_open()
980 if (!rp) { in cache_open()
984 rp->offset = 0; in cache_open()
985 rp->q.reader = 1; in cache_open()
988 list_add(&rp->q.list, &cd->queue); in cache_open()
991 filp->private_data = rp; in cache_open()
998 struct cache_reader *rp = filp->private_data; in cache_release() local
1000 if (rp) { in cache_release()
1002 if (rp->offset) { in cache_release()
1004 for (cq= &rp->q; &cq->list != &cd->queue; in cache_release()
1011 rp->offset = 0; in cache_release()
1013 list_del(&rp->q.list); in cache_release()
1017 kfree(rp); in cache_release()