Lines Matching refs:inode

173         let inode = self.inner.lock();  in readable()  localVariable
174 return inode.valid_cnt > 0 || inode.writer == 0; in readable()
178 let inode = self.inner.lock(); in writeable() localVariable
179 return !inode.buf_full() || inode.reader == 0; in writeable()
206 let mut inode = self.inner.lock(); in read_at() localVariable
209 while inode.valid_cnt == 0 { in read_at()
211 if inode.writer == 0 { in read_at()
220 drop(inode); in read_at()
225 drop(inode); in read_at()
231 inode = self.inner.lock(); in read_at()
234 let mut num = inode.valid_cnt as usize; in read_at()
236 let start = inode.read_pos as usize; in read_at()
238 let mut end = (inode.valid_cnt as usize + inode.read_pos as usize) % PIPE_BUFF_SIZE; in read_at()
240 if len < inode.valid_cnt as usize { in read_at()
241 end = (len + inode.read_pos as usize) % PIPE_BUFF_SIZE; in read_at()
248 buf[0..(PIPE_BUFF_SIZE - start)].copy_from_slice(&inode.data[start..PIPE_BUFF_SIZE]); in read_at()
249 buf[(PIPE_BUFF_SIZE - start)..num].copy_from_slice(&inode.data[0..end]); in read_at()
251 buf[0..num].copy_from_slice(&inode.data[start..end]); in read_at()
255 inode.read_pos = (inode.read_pos + num as i32) % PIPE_BUFF_SIZE as i32; in read_at()
256 inode.valid_cnt -= num as i32; in read_at()
259 if inode.valid_cnt > 0 { in read_at()
268 let pollflag = EPollEventType::from_bits_truncate(inode.poll(&data)? as u32); in read_at()
270 EventPoll::wakeup_epoll(&inode.epitems, pollflag)?; in read_at()
300 let inode = self.inner.lock(); in metadata() localVariable
301 let mut metadata = inode.metadata.clone(); in metadata()
302 metadata.size = inode.data.len() as i64; in metadata()
361 let mut inode = self.inner.lock(); in write_at() localVariable
363 if inode.reader == 0 { in write_at()
369 while len + inode.valid_cnt as usize > PIPE_BUFF_SIZE { in write_at()
376 drop(inode); in write_at()
381 drop(inode); in write_at()
386 inode = self.inner.lock(); in write_at()
390 let start = inode.write_pos as usize; in write_at()
391 let end = (inode.write_pos as usize + len) % PIPE_BUFF_SIZE; in write_at()
395 inode.data[start..PIPE_BUFF_SIZE].copy_from_slice(&buf[0..(PIPE_BUFF_SIZE - start)]); in write_at()
396 inode.data[0..end].copy_from_slice(&buf[(PIPE_BUFF_SIZE - start)..len]); in write_at()
398 inode.data[start..end].copy_from_slice(&buf[0..len]); in write_at()
401 inode.write_pos = (inode.write_pos + len as i32) % PIPE_BUFF_SIZE as i32; in write_at()
402 inode.valid_cnt += len as i32; in write_at()
405 if (inode.valid_cnt as usize) < PIPE_BUFF_SIZE { in write_at()
414 let pollflag = EPollEventType::from_bits_truncate(inode.poll(&data)? as u32); in write_at()
416 EventPoll::wakeup_epoll(&inode.epitems, pollflag)?; in write_at()