Lines Matching refs:rp

766 	struct cache_reader *rp = filp->private_data;  in cache_read()  local
779 while (rp->q.list.next != &cd->queue && in cache_read()
780 list_entry(rp->q.list.next, struct cache_queue, list) in cache_read()
782 struct list_head *next = rp->q.list.next; in cache_read()
783 list_move(&rp->q.list, next); in cache_read()
785 if (rp->q.list.next == &cd->queue) { in cache_read()
788 WARN_ON_ONCE(rp->offset); in cache_read()
791 rq = container_of(rp->q.list.next, struct cache_request, q.list); in cache_read()
793 if (rp->offset == 0) in cache_read()
804 if (rp->offset == 0 && !test_bit(CACHE_PENDING, &rq->item->flags)) { in cache_read()
807 list_move(&rp->q.list, &rq->q.list); in cache_read()
810 if (rp->offset + count > rq->len) in cache_read()
811 count = rq->len - rp->offset; in cache_read()
813 if (copy_to_user(buf, rq->buf + rp->offset, count)) in cache_read()
815 rp->offset += count; in cache_read()
816 if (rp->offset >= rq->len) { in cache_read()
817 rp->offset = 0; in cache_read()
819 list_move(&rp->q.list, &rq->q.list); in cache_read()
825 if (rp->offset == 0) { in cache_read()
925 struct cache_reader *rp = filp->private_data; in cache_poll() local
933 if (!rp) in cache_poll()
938 for (cq= &rp->q; &cq->list != &cd->queue; in cache_poll()
953 struct cache_reader *rp = filp->private_data; in cache_ioctl() local
956 if (cmd != FIONREAD || !rp) in cache_ioctl()
964 for (cq= &rp->q; &cq->list != &cd->queue; in cache_ioctl()
969 len = cr->len - rp->offset; in cache_ioctl()
980 struct cache_reader *rp = NULL; in cache_open() local
986 rp = kmalloc(sizeof(*rp), GFP_KERNEL); in cache_open()
987 if (!rp) { in cache_open()
991 rp->offset = 0; in cache_open()
992 rp->q.reader = 1; in cache_open()
995 list_add(&rp->q.list, &cd->queue); in cache_open()
998 filp->private_data = rp; in cache_open()
1005 struct cache_reader *rp = filp->private_data; in cache_release() local
1007 if (rp) { in cache_release()
1009 if (rp->offset) { in cache_release()
1011 for (cq= &rp->q; &cq->list != &cd->queue; in cache_release()
1018 rp->offset = 0; in cache_release()
1020 list_del(&rp->q.list); in cache_release()
1024 kfree(rp); in cache_release()