diff --git a/Makefile b/Makefile index fced8f3..d803df1 100644 --- a/Makefile +++ b/Makefile @@ -425,6 +425,7 @@ coreutils: \ filesystem/bin/cut \ filesystem/bin/date \ filesystem/bin/dd \ + filesystem/bin/df \ filesystem/bin/du \ filesystem/bin/echo \ filesystem/bin/env \ diff --git a/kernel/scheme/user.rs b/kernel/scheme/user.rs index b396391..b7355bb 100644 --- a/kernel/scheme/user.rs +++ b/kernel/scheme/user.rs @@ -11,7 +11,7 @@ use context::{self, Context}; use context::memory::Grant; use scheme::{AtomicSchemeId, ATOMIC_SCHEMEID_INIT, SchemeId}; use sync::{WaitQueue, WaitMap}; -use syscall::data::{Packet, Stat}; +use syscall::data::{Packet, Stat, StatVfs}; use syscall::error::*; use syscall::flag::{EVENT_READ, O_NONBLOCK}; use syscall::number::*; @@ -332,7 +332,15 @@ impl Scheme for UserScheme { fn fstat(&self, file: usize, stat: &mut Stat) -> Result { let inner = self.inner.upgrade().ok_or(Error::new(ENODEV))?; let address = inner.capture_mut(stat)?; - let result = inner.call(SYS_FSTAT, file, address, 0); + let result = inner.call(SYS_FSTAT, file, address, mem::size_of::()); + let _ = inner.release(address); + result + } + + fn fstatvfs(&self, file: usize, stat: &mut StatVfs) -> Result { + let inner = self.inner.upgrade().ok_or(Error::new(ENODEV))?; + let address = inner.capture_mut(stat)?; + let result = inner.call(SYS_FSTATVFS, file, address, mem::size_of::()); let _ = inner.release(address); result } diff --git a/programs/coreutils b/programs/coreutils index 4b58de0..3308c45 160000 --- a/programs/coreutils +++ b/programs/coreutils @@ -1 +1 @@ -Subproject commit 4b58de0b3c66634f95668e47466014138c5f71bd +Subproject commit 3308c4507cfe7c3922e41ad472d792dac864e83f diff --git a/programs/extrautils b/programs/extrautils index 1d0e93b..b3d8bf6 160000 --- a/programs/extrautils +++ b/programs/extrautils @@ -1 +1 @@ -Subproject commit 1d0e93bb3c35ef58cd1ad8039b30701033ff2e98 +Subproject commit b3d8bf61860cd4c7c2263b2798779aa182cab1d6 diff --git a/programs/netutils b/programs/netutils index fca4078..2ce04b5 160000 --- a/programs/netutils +++ b/programs/netutils @@ -1 +1 @@ -Subproject commit fca407875c4184d17105fe2d455d0f1e85f80a05 +Subproject commit 2ce04b5f82a04f9d88ed8664dde18fc2468a046f diff --git a/schemes/redoxfs b/schemes/redoxfs index 3160516..dcaf5c7 160000 --- a/schemes/redoxfs +++ b/schemes/redoxfs @@ -1 +1 @@ -Subproject commit 31605167ceb20bc3e2ffb6ef0b15fc05ca16ad7c +Subproject commit dcaf5c76be265bbfa5013cf131f14fa79680a634 diff --git a/syscall b/syscall index 8ce29a6..cc90408 160000 --- a/syscall +++ b/syscall @@ -1 +1 @@ -Subproject commit 8ce29a6ea29042d4101733cc25e84a013a74018a +Subproject commit cc90408d147cc1d23b0e820d5b47522bd7dfc847