Lines Matching defs:len

81  * @len: the maximum length to advance
83 void vringh_kiov_advance(struct vringh_kiov *iov, size_t len)
85 while (len && iov->i < iov->used) {
86 size_t partlen = min(iov->iov[iov->i].iov_len, len);
101 len -= partlen;
109 void *ptr, size_t len,
112 size_t len))
116 while (len && iov->i < iov->used) {
119 partlen = min(iov->iov[iov->i].iov_len, len);
124 len -= partlen;
142 /* May reduce *len if range is shorter. */
143 static inline bool range_check(struct vringh *vrh, u64 addr, size_t *len,
155 if (unlikely(addr + *len == 0)) {
162 if (addr + *len < addr) {
164 *len, (unsigned long long)addr);
168 if (unlikely(addr + *len - 1 > range->end_incl))
173 *len = range->end_incl + 1 - addr;
177 static inline bool no_range_check(struct vringh *vrh, u64 addr, size_t *len,
191 u32 len;
199 len = vringh32_to_cpu(vrh, desc->len);
200 if (unlikely(len % sizeof(struct vring_desc))) {
201 vringh_bad("Strange indirect len %u", desc->len);
211 *desc_max = len / sizeof(struct vring_desc);
257 bool (*rcheck)(struct vringh *vrh, u64 addr, size_t *len,
267 void *dst, const void *src, size_t len))
269 size_t part, len = sizeof(struct vring_desc);
275 part = len;
287 len -= part;
288 } while (len);
296 bool (*rcheck)(struct vringh *vrh, u64 addr, size_t *len,
303 void *dst, const void *src, size_t len))
327 size_t len;
342 len = vringh32_to_cpu(vrh, desc.len);
343 if (!rcheck(vrh, a, &len, &range, getrange)) {
348 if (unlikely(len != vringh32_to_cpu(vrh, desc.len))) {
394 len = vringh32_to_cpu(vrh, desc.len);
395 if (!rcheck(vrh, vringh64_to_cpu(vrh, desc.addr), &len, &range,
410 iov->iov[iov->used].iov_len = len;
413 if (unlikely(len != vringh32_to_cpu(vrh, desc.len))) {
414 desc.len = cpu_to_vringh32(vrh,
415 vringh32_to_cpu(vrh, desc.len) - len);
417 vringh64_to_cpu(vrh, desc.addr) + len);
614 void *dst, const void *src, size_t len)
616 return copy_from_user(dst, (__force void __user *)src, len) ?
630 void *dst, size_t len)
632 return copy_from_user(dst, (__force void __user *)src, len) ?
637 void *dst, void *src, size_t len)
639 return copy_to_user((__force void __user *)dst, src, len) ?
756 * @len: the maximum length to copy.
758 * Returns the bytes copied <= len or a negative errno.
760 ssize_t vringh_iov_pull_user(struct vringh_iov *riov, void *dst, size_t len)
763 dst, len, xfer_from_user);
771 * @len: the maximum length to copy.
773 * Returns the bytes copied <= len or a negative errno.
776 const void *src, size_t len)
779 (void *)src, len, xfer_to_user);
803 * @len: the length of data we have written.
808 int vringh_complete_user(struct vringh *vrh, u16 head, u32 len)
813 used.len = cpu_to_vringh32(vrh, len);
889 void *dst, const void *src, size_t len)
891 memcpy(dst, src, len);
905 void *dst, size_t len)
907 memcpy(dst, src, len);
912 void *src, size_t len)
914 memcpy(dst, src, len);
1006 * @len: the maximum length to copy.
1008 * Returns the bytes copied <= len or a negative errno.
1010 ssize_t vringh_iov_pull_kern(struct vringh_kiov *riov, void *dst, size_t len)
1012 return vringh_iov_xfer(NULL, riov, dst, len, xfer_kern);
1020 * @len: the maximum length to copy.
1022 * Returns the bytes copied <= len or a negative errno.
1025 const void *src, size_t len)
1027 return vringh_iov_xfer(NULL, wiov, (void *)src, len, kern_xfer);
1051 * @len: the length of data we have written.
1056 int vringh_complete_kern(struct vringh *vrh, u16 head, u32 len)
1061 used.len = cpu_to_vringh32(vrh, len);
1116 u64 addr, u64 len, u64 *translated,
1122 u64 s = 0, last = addr + len - 1;
1126 while (len > s) {
1146 io_len = min(len - s, size);
1170 *translated = min(len, s);
1178 void *src, size_t len)
1190 while (total_translated < len) {
1196 len - total_translated, &translated,
1224 void *src, size_t len)
1236 while (total_translated < len) {
1242 len - total_translated, &translated,
1344 void *dst, const void *src, size_t len)
1348 ret = copy_from_iotlb(vrh, dst, (void *)src, len);
1349 if (ret != len)
1356 void *dst, size_t len)
1360 ret = copy_from_iotlb(vrh, dst, src, len);
1361 if (ret != len)
1368 void *dst, void *src, size_t len)
1372 ret = copy_to_iotlb(vrh, dst, src, len);
1373 if (ret != len)
1511 * @len: the maximum length to copy.
1513 * Returns the bytes copied <= len or a negative errno.
1517 void *dst, size_t len)
1519 return vringh_iov_xfer(vrh, riov, dst, len, xfer_from_iotlb);
1528 * @len: the maximum length to copy.
1530 * Returns the bytes copied <= len or a negative errno.
1534 const void *src, size_t len)
1536 return vringh_iov_xfer(vrh, wiov, (void *)src, len, xfer_to_iotlb);
1561 * @len: the length of data we have written.
1566 int vringh_complete_iotlb(struct vringh *vrh, u16 head, u32 len)
1571 used.len = cpu_to_vringh32(vrh, len);