diff --git a/src/scheme/pipe.rs b/src/scheme/pipe.rs index 802b748dfbd5f988095b6f96ce18123491c5df4b..022ec96069959ccb4cd7447ac736caf0687a44a1 100644 --- a/src/scheme/pipe.rs +++ b/src/scheme/pipe.rs @@ -6,8 +6,9 @@ use scheme::{AtomicSchemeId, ATOMIC_SCHEMEID_INIT, SchemeId}; use sync::WaitCondition; use syscall::error::{Error, Result, EAGAIN, EBADF, EINVAL, EPIPE}; -use syscall::flag::{F_GETFL, F_SETFL, O_ACCMODE, O_NONBLOCK}; +use syscall::flag::{F_GETFL, F_SETFL, O_ACCMODE, O_NONBLOCK, MODE_CHR}; use syscall::scheme::Scheme; +use syscall::data::Stat; /// Pipes list pub static PIPE_SCHEME_ID: AtomicSchemeId = ATOMIC_SCHEMEID_INIT; @@ -122,6 +123,15 @@ impl Scheme for PipeScheme { Ok(i) } + fn fstat(&self, _id: usize, stat: &mut Stat) -> Result<usize> { + *stat = Stat { + st_mode: MODE_CHR | 0o666, + ..Default::default() + }; + + Ok(0) + } + fn fsync(&self, _id: usize) -> Result<usize> { Ok(0) }