MCPcopy Create free account
hub / github.com/Starry-OS/StarryOS / read

Method read

api/src/io.rs:106–126  ·  view source on GitHub ↗
(&mut self, buf: &mut [u8])

Source from the content-addressed store, hash-verified

104
105impl 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
129impl Write for IoVectorBufIo {

Callers

nothing calls this directly

Calls 2

skip_emptyMethod · 0.80
lenMethod · 0.45

Tested by

no test coverage detected