(&mut self, buf: &mut [u8])
| 104 | |
| 105 | impl Read for IoVectorBufIo { |
| 106 | fn read(&mut self, buf: &mut [u8]) -> AxResult<usize> { |
| 107 | let mut count = 0; |
| 108 | loop { |
| 109 | self.skip_empty()?; |
| 110 | if self.start >= self.inner.iovcnt { |
| 111 | break; |
| 112 | } |
| 113 | let iov = self.inner.iovs.wrapping_add(self.start).vm_read()?; |
| 114 | let len = (iov.iov_len as usize - self.offset).min(buf.len() - count); |
| 115 | if len == 0 { |
| 116 | break; |
| 117 | } |
| 118 | vm_read_slice(iov.iov_base.wrapping_add(self.offset), unsafe { |
| 119 | mem::transmute::<&mut [u8], &mut [MaybeUninit<u8>]>(&mut buf[count..count + len]) |
| 120 | })?; |
| 121 | self.offset += len; |
| 122 | self.inner.len -= len; |
| 123 | count += len; |
| 124 | } |
| 125 | Ok(count) |
| 126 | } |
| 127 | } |
| 128 | |
| 129 | impl Write for IoVectorBufIo { |
nothing calls this directly
no test coverage detected