Lines Matching refs:iov
72 static inline ssize_t vringh_iov_xfer(struct vringh_kiov *iov, in vringh_iov_xfer() argument
79 while (len && iov->i < iov->used) { in vringh_iov_xfer()
82 partlen = min(iov->iov[iov->i].iov_len, len); in vringh_iov_xfer()
83 err = xfer(iov->iov[iov->i].iov_base, ptr, partlen); in vringh_iov_xfer()
89 iov->consumed += partlen; in vringh_iov_xfer()
90 iov->iov[iov->i].iov_len -= partlen; in vringh_iov_xfer()
91 iov->iov[iov->i].iov_base += partlen; in vringh_iov_xfer()
93 if (!iov->iov[iov->i].iov_len) { in vringh_iov_xfer()
95 iov->iov[iov->i].iov_len = iov->consumed; in vringh_iov_xfer()
96 iov->iov[iov->i].iov_base -= iov->consumed; in vringh_iov_xfer()
98 iov->consumed = 0; in vringh_iov_xfer()
99 iov->i++; in vringh_iov_xfer()
181 static int resize_iovec(struct vringh_kiov *iov, gfp_t gfp) in resize_iovec() argument
184 unsigned int flag, new_num = (iov->max_num & ~VRINGH_IOV_ALLOCATED) * 2; in resize_iovec()
189 flag = (iov->max_num & VRINGH_IOV_ALLOCATED); in resize_iovec()
191 new = krealloc(iov->iov, new_num * sizeof(struct iovec), gfp); in resize_iovec()
195 memcpy(new, iov->iov, in resize_iovec()
196 iov->max_num * sizeof(struct iovec)); in resize_iovec()
202 iov->iov = new; in resize_iovec()
203 iov->max_num = (new_num | flag); in resize_iovec()
285 struct vringh_kiov *iov; in __vringh_iov() local
328 iov = wiov; in __vringh_iov()
330 iov = riov; in __vringh_iov()
339 if (!iov) { in __vringh_iov()
357 if (unlikely(iov->used == (iov->max_num & ~VRINGH_IOV_ALLOCATED))) { in __vringh_iov()
358 err = resize_iovec(iov, gfp); in __vringh_iov()
363 iov->iov[iov->used].iov_base = addr; in __vringh_iov()
364 iov->iov[iov->used].iov_len = len; in __vringh_iov()
365 iov->used++; in __vringh_iov()
668 BUILD_BUG_ON(offsetof(struct vringh_kiov, iov) != in vringh_getdesc_user()
669 offsetof(struct vringh_iov, iov)); in vringh_getdesc_user()