(&mut self, buf: &[u8])
| 128 | |
| 129 | impl Write for IoVectorBufIo { |
| 130 | fn write(&mut self, buf: &[u8]) -> AxResult<usize> { |
| 131 | let mut count = 0; |
| 132 | loop { |
| 133 | self.skip_empty()?; |
| 134 | if self.start >= self.inner.iovcnt { |
| 135 | break; |
| 136 | } |
| 137 | let iov = self.inner.iovs.wrapping_add(self.start).vm_read()?; |
| 138 | let len = (iov.iov_len as usize - self.offset).min(buf.len() - count); |
| 139 | if len == 0 { |
| 140 | break; |
| 141 | } |
| 142 | vm_write_slice( |
| 143 | iov.iov_base.wrapping_add(self.offset), |
| 144 | &buf[count..count + len], |
| 145 | )?; |
| 146 | self.offset += len; |
| 147 | self.inner.len -= len; |
| 148 | count += len; |
| 149 | } |
| 150 | Ok(count) |
| 151 | } |
| 152 | |
| 153 | fn flush(&mut self) -> AxResult { |
| 154 | Ok(()) |
no test coverage detected