From 66a5379ff6e8c7d5869399123597fccbe13be8f0 Mon Sep 17 00:00:00 2001 From: Alex Lyon <arcterus@mail.com> Date: Fri, 15 Dec 2017 21:06:19 -0800 Subject: [PATCH] Move null and zero from kernel space to user space --- src/scheme/mod.rs | 10 -------- src/scheme/null.rs | 55 ------------------------------------------ src/scheme/zero.rs | 60 ---------------------------------------------- 3 files changed, 125 deletions(-) delete mode 100644 src/scheme/null.rs delete mode 100644 src/scheme/zero.rs diff --git a/src/scheme/mod.rs b/src/scheme/mod.rs index 6ca1f204..73f1e301 100644 --- a/src/scheme/mod.rs +++ b/src/scheme/mod.rs @@ -21,12 +21,10 @@ use self::env::EnvScheme; use self::initfs::InitFsScheme; use self::irq::IrqScheme; use self::memory::MemoryScheme; -use self::null::NullScheme; use self::pipe::PipeScheme; use self::root::RootScheme; use self::sys::SysScheme; use self::time::TimeScheme; -use self::zero::ZeroScheme; /// `debug:` - provides access to serial console pub mod debug; @@ -50,9 +48,6 @@ pub mod live; /// `memory:` - a scheme for accessing physical memory pub mod memory; -/// `null:` - a scheme that will discard all writes, and read no bytes -pub mod null; - /// `pipe:` - used internally by the kernel to implement `pipe` pub mod pipe; @@ -68,9 +63,6 @@ pub mod time; /// A wrapper around userspace schemes, tightly dependent on `root` pub mod user; -/// `zero:` - a scheme that will discard all writes, and always fill read buffers with zero -pub mod zero; - /// Limit on number of schemes pub const SCHEME_MAX_SCHEMES: usize = 65536; @@ -117,10 +109,8 @@ impl SchemeList { self.insert(ns, Box::new(*b"event"), |_| Arc::new(Box::new(EventScheme::new()))).unwrap(); self.insert(ns, Box::new(*b"env"), |_| Arc::new(Box::new(EnvScheme::new()))).unwrap(); self.insert(ns, Box::new(*b"memory"), |_| Arc::new(Box::new(MemoryScheme))).unwrap(); - self.insert(ns, Box::new(*b"null"), |_| Arc::new(Box::new(NullScheme))).unwrap(); self.insert(ns, Box::new(*b"sys"), |_| Arc::new(Box::new(SysScheme::new()))).unwrap(); self.insert(ns, Box::new(*b"time"), |scheme_id| Arc::new(Box::new(TimeScheme::new(scheme_id)))).unwrap(); - self.insert(ns, Box::new(*b"zero"), |_| Arc::new(Box::new(ZeroScheme))).unwrap(); ns } diff --git a/src/scheme/null.rs b/src/scheme/null.rs deleted file mode 100644 index 3906d32d..00000000 --- a/src/scheme/null.rs +++ /dev/null @@ -1,55 +0,0 @@ -use syscall::error::*; -use syscall::scheme::Scheme; - -pub struct NullScheme; - -impl Scheme for NullScheme { - fn open(&self, _path: &[u8], _flags: usize, _uid: u32, _gid: u32) -> Result<usize> { - Ok(0) - } - - fn dup(&self, _file: usize, buf: &[u8]) -> Result<usize> { - if ! buf.is_empty() { - return Err(Error::new(EINVAL)); - } - - Ok(0) - } - - /// Read the file `number` into the `buffer` - /// - /// Returns the number of bytes read - fn read(&self, _file: usize, _buf: &mut [u8]) -> Result<usize> { - Ok(0) - } - - /// Write the `buffer` to the `file` - /// - /// Returns the number of bytes written - fn write(&self, _file: usize, buffer: &[u8]) -> Result<usize> { - Ok(buffer.len()) - } - - fn fcntl(&self, _id: usize, _cmd: usize, _arg: usize) -> Result<usize> { - Ok(0) - } - - fn fpath(&self, _id: usize, buf: &mut [u8]) -> Result<usize> { - let mut i = 0; - let scheme_path = b"null:"; - while i < buf.len() && i < scheme_path.len() { - buf[i] = scheme_path[i]; - i += 1; - } - Ok(i) - } - - fn fsync(&self, _file: usize) -> Result<usize> { - Ok(0) - } - - /// Close the file `number` - fn close(&self, _file: usize) -> Result<usize> { - Ok(0) - } -} diff --git a/src/scheme/zero.rs b/src/scheme/zero.rs deleted file mode 100644 index 05b1cdcf..00000000 --- a/src/scheme/zero.rs +++ /dev/null @@ -1,60 +0,0 @@ -use syscall::error::*; -use syscall::scheme::Scheme; - -pub struct ZeroScheme; - -impl Scheme for ZeroScheme { - fn open(&self, _path: &[u8], _flags: usize, _uid: u32, _gid: u32) -> Result<usize> { - Ok(0) - } - - fn dup(&self, _file: usize, buf: &[u8]) -> Result<usize> { - if ! buf.is_empty() { - return Err(Error::new(EINVAL)); - } - - Ok(0) - } - - /// Read the file `number` into the `buffer` - /// - /// Returns the number of bytes read - fn read(&self, _file: usize, buf: &mut [u8]) -> Result<usize> { - let mut i = 0; - while i < buf.len() { - buf[i] = 0; - i += 1; - } - Ok(i) - } - - /// Write the `buffer` to the `file` - /// - /// Returns the number of bytes written - fn write(&self, _file: usize, buffer: &[u8]) -> Result<usize> { - Ok(buffer.len()) - } - - fn fcntl(&self, _id: usize, _cmd: usize, _arg: usize) -> Result<usize> { - Ok(0) - } - - fn fpath(&self, _id: usize, buf: &mut [u8]) -> Result<usize> { - let mut i = 0; - let scheme_path = b"zero:"; - while i < buf.len() && i < scheme_path.len() { - buf[i] = scheme_path[i]; - i += 1; - } - Ok(i) - } - - fn fsync(&self, _file: usize) -> Result<usize> { - Ok(0) - } - - /// Close the file `number` - fn close(&self, _file: usize) -> Result<usize> { - Ok(0) - } -} -- GitLab