| 1098 | } |
| 1099 | |
| 1100 | ssize_t |
| 1101 | ff_readv(int fd, const struct iovec *iov, int iovcnt) |
| 1102 | { |
| 1103 | struct uio auio; |
| 1104 | int rc, len, i; |
| 1105 | |
| 1106 | len = 0; |
| 1107 | for (i = 0; i < iovcnt; i++) |
| 1108 | len += iov[i].iov_len; |
| 1109 | auio.uio_iov = __DECONST(struct iovec *, iov); |
| 1110 | auio.uio_iovcnt = iovcnt; |
| 1111 | auio.uio_resid = len; |
| 1112 | auio.uio_segflg = UIO_SYSSPACE; |
| 1113 | |
| 1114 | if ((rc = kern_readv(curthread, fd, &auio))) |
| 1115 | goto kern_fail; |
| 1116 | rc = curthread->td_retval[0]; |
| 1117 | |
| 1118 | return (rc); |
| 1119 | kern_fail: |
| 1120 | ff_os_errno(rc); |
| 1121 | return (-1); |
| 1122 | } |
| 1123 | |
| 1124 | ssize_t |
| 1125 | ff_write(int fd, const void *buf, size_t nbytes) |
no test coverage detected