diff --git a/src/scheme/debug.rs b/src/scheme/debug.rs index fa559f37dd057ccc6aa834ce056161abff7b0107..17e016fa6d18471b753bc442aa8754302d358871 100644 --- a/src/scheme/debug.rs +++ b/src/scheme/debug.rs @@ -59,22 +59,6 @@ impl Scheme for DebugScheme { Ok(id) } - fn dup(&self, id: usize, buf: &[u8]) -> Result<usize> { - if ! buf.is_empty() { - return Err(Error::new(EINVAL)); - } - - let flags = { - let handles = handles(); - *handles.get(&id).ok_or(Error::new(EBADF))? - }; - - let new_id = NEXT_ID.fetch_add(1, Ordering::SeqCst); - handles_mut().insert(new_id, flags); - - Ok(new_id) - } - /// Read the file `number` into the `buffer` /// /// Returns the number of bytes read diff --git a/src/scheme/initfs.rs b/src/scheme/initfs.rs index a283f382ab8e002becfbcc0a10c7cf64d962450c..113507ef288890105bebfc7c439c26d5966b3a1e 100644 --- a/src/scheme/initfs.rs +++ b/src/scheme/initfs.rs @@ -19,7 +19,6 @@ include!(concat!(env!("OUT_DIR"), "/gen.rs")); struct Handle { path: &'static [u8], - flags: usize, data: &'static [u8], mode: u16, seek: usize @@ -42,7 +41,7 @@ impl InitFsScheme { } impl Scheme for InitFsScheme { - fn open(&self, path: &[u8], flags: usize, _uid: u32, _gid: u32) -> Result<usize> { + fn open(&self, path: &[u8], _flags: usize, _uid: u32, _gid: u32) -> Result<usize> { let path_utf8 = str::from_utf8(path).or(Err(Error::new(ENOENT)))?; let path_trimmed = path_utf8.trim_matches('/'); @@ -52,7 +51,6 @@ impl Scheme for InitFsScheme { let id = self.next_id.fetch_add(1, Ordering::SeqCst); self.handles.write().insert(id, Handle { path: entry.0, - flags: flags, data: (entry.1).0, mode: if (entry.1).1 { MODE_DIR | 0o755 } else { MODE_FILE | 0o744 }, seek: 0 @@ -65,29 +63,6 @@ impl Scheme for InitFsScheme { Err(Error::new(ENOENT)) } - fn dup(&self, id: usize, buf: &[u8]) -> Result<usize> { - if ! buf.is_empty() { - return Err(Error::new(EINVAL)); - } - - let (path, flags, data, mode, seek) = { - let handles = self.handles.read(); - let handle = handles.get(&id).ok_or(Error::new(EBADF))?; - (handle.path, handle.flags, handle.data, handle.mode, handle.seek) - }; - - let id = self.next_id.fetch_add(1, Ordering::SeqCst); - self.handles.write().insert(id, Handle { - path: path, - flags: flags, - data: data, - mode: mode, - seek: seek - }); - - Ok(id) - } - fn read(&self, id: usize, buffer: &mut [u8]) -> Result<usize> { let mut handles = self.handles.write(); let handle = handles.get_mut(&id).ok_or(Error::new(EBADF))?; diff --git a/src/scheme/irq.rs b/src/scheme/irq.rs index d48e4c60c134903f6994c942983104ac139de94a..3c61091a46d6ae5ccf7dc4fc8ad41366c0b3451c 100644 --- a/src/scheme/irq.rs +++ b/src/scheme/irq.rs @@ -48,14 +48,6 @@ impl Scheme for IrqScheme { } } - fn dup(&self, file: usize, buf: &[u8]) -> Result<usize> { - if ! buf.is_empty() { - return Err(Error::new(EINVAL)); - } - - Ok(file) - } - fn read(&self, file: usize, buffer: &mut [u8]) -> Result<usize> { // Ensures that the length of the buffer is larger than the size of a usize if buffer.len() >= mem::size_of::<usize>() { diff --git a/src/scheme/live.rs b/src/scheme/live.rs index 95afdad83a128bae8dc604322c4767c906a18b8f..f753e2b35e3cb7311f0c4b8e75e5494fce60e013 100644 --- a/src/scheme/live.rs +++ b/src/scheme/live.rs @@ -64,28 +64,6 @@ impl Scheme for DiskScheme { Ok(id) } - fn dup(&self, id: usize, buf: &[u8]) -> Result<usize> { - if ! buf.is_empty() { - return Err(Error::new(EINVAL)); - } - - let (path, data, mode, seek) = { - let handles = self.handles.read(); - let handle = handles.get(&id).ok_or(Error::new(EBADF))?; - (handle.path, handle.data.clone(), handle.mode, handle.seek) - }; - - let id = self.next_id.fetch_add(1, Ordering::SeqCst); - self.handles.write().insert(id, Handle { - path: path, - data: data, - mode: mode, - seek: seek - }); - - Ok(id) - } - fn read(&self, id: usize, buffer: &mut [u8]) -> Result<usize> { let mut handles = self.handles.write(); let mut handle = handles.get_mut(&id).ok_or(Error::new(EBADF))?; diff --git a/src/scheme/pipe.rs b/src/scheme/pipe.rs index d7659b67999995ac5a74df06f999ad397a18b46b..3112abc4f3a16e085b87f6e6af6d6b0cd4b7c7d9 100644 --- a/src/scheme/pipe.rs +++ b/src/scheme/pipe.rs @@ -53,38 +53,6 @@ impl PipeScheme { } impl Scheme for PipeScheme { - fn dup(&self, id: usize, buf: &[u8]) -> Result<usize> { - if ! buf.is_empty() { - return Err(Error::new(EINVAL)); - } - - let mut pipes = pipes_mut(); - - let read_option = if let Some(pipe) = pipes.0.get(&id) { - Some(pipe.dup()?) - } else { - None - }; - if let Some(pipe) = read_option { - let pipe_id = PIPE_NEXT_ID.fetch_add(1, Ordering::SeqCst); - pipes.0.insert(pipe_id, Arc::new(pipe)); - return Ok(pipe_id); - } - - let write_option = if let Some(pipe) = pipes.1.get(&id) { - Some(pipe.dup()?) - } else { - None - }; - if let Some(pipe) = write_option { - let pipe_id = PIPE_NEXT_ID.fetch_add(1, Ordering::SeqCst); - pipes.1.insert(pipe_id, Arc::new(pipe)); - return Ok(pipe_id); - } - - Err(Error::new(EBADF)) - } - fn read(&self, id: usize, buf: &mut [u8]) -> Result<usize> { // Clone to prevent deadlocks let pipe = { @@ -186,16 +154,6 @@ impl PipeRead { } } - fn dup(&self) -> Result<Self> { - Ok(PipeRead { - scheme_id: self.scheme_id, - event_id: self.event_id, - flags: AtomicUsize::new(self.flags.load(Ordering::SeqCst)), - condition: self.condition.clone(), - vec: self.vec.clone() - }) - } - fn fcntl(&self, cmd: usize, arg: usize) -> Result<usize> { match cmd { F_GETFL => Ok(self.flags.load(Ordering::SeqCst)), @@ -264,16 +222,6 @@ impl PipeWrite { } } - fn dup(&self) -> Result<Self> { - Ok(PipeWrite { - scheme_id: self.scheme_id, - event_id: self.event_id, - flags: AtomicUsize::new(self.flags.load(Ordering::SeqCst)), - condition: self.condition.clone(), - vec: self.vec.clone() - }) - } - fn fcntl(&self, cmd: usize, arg: usize) -> Result<usize> { match cmd { F_GETFL => Ok(self.flags.load(Ordering::SeqCst)), diff --git a/src/scheme/root.rs b/src/scheme/root.rs index f98af13cd63578dbad2c159aa8e189dd0cad9091..e8c427095d7a617c3bdd6d28edbf2d770617b860 100644 --- a/src/scheme/root.rs +++ b/src/scheme/root.rs @@ -127,23 +127,6 @@ impl Scheme for RootScheme { } } - fn dup(&self, file: usize, buf: &[u8]) -> Result<usize> { - if ! buf.is_empty() { - return Err(Error::new(EINVAL)); - } - - let mut handles = self.handles.write(); - let inner = { - let inner = handles.get(&file).ok_or(Error::new(EBADF))?; - inner.clone() - }; - - let id = self.next_id.fetch_add(1, Ordering::SeqCst); - handles.insert(id, inner); - - Ok(id) - } - fn read(&self, file: usize, buf: &mut [u8]) -> Result<usize> { let handle = { let handles = self.handles.read(); diff --git a/src/scheme/sys/mod.rs b/src/scheme/sys/mod.rs index 91380f1494f4e224acc8999ce9a24c2293377c24..a98d1ba883f35c6b76a031d331eb50beaac41639 100644 --- a/src/scheme/sys/mod.rs +++ b/src/scheme/sys/mod.rs @@ -96,28 +96,6 @@ impl Scheme for SysScheme { Err(Error::new(ENOENT)) } - fn dup(&self, id: usize, buf: &[u8]) -> Result<usize> { - if ! buf.is_empty() { - return Err(Error::new(EINVAL)); - } - - let (path, data, mode, seek) = { - let handles = self.handles.read(); - let handle = handles.get(&id).ok_or(Error::new(EBADF))?; - (handle.path, handle.data.clone(), handle.mode, handle.seek) - }; - - let id = self.next_id.fetch_add(1, Ordering::SeqCst); - self.handles.write().insert(id, Handle { - path: path, - data: data, - mode: mode, - seek: seek - }); - - Ok(id) - } - fn read(&self, id: usize, buffer: &mut [u8]) -> Result<usize> { let mut handles = self.handles.write(); let handle = handles.get_mut(&id).ok_or(Error::new(EBADF))?; diff --git a/src/scheme/time.rs b/src/scheme/time.rs index 2e9c09a55c5d06daff0f4f24e19f30fa5d31cc3b..a7f9180d0e3f47fc7b6134d51fe2aaa3bfe392eb 100644 --- a/src/scheme/time.rs +++ b/src/scheme/time.rs @@ -45,21 +45,6 @@ impl Scheme for TimeScheme { Ok(id) } - fn dup(&self, id: usize, buf: &[u8]) -> Result<usize> { - if ! buf.is_empty() { - return Err(Error::new(EINVAL)); - } - - let clock = { - let handles = self.handles.read(); - *handles.get(&id).ok_or(Error::new(EBADF))? - }; - - let new_id = self.next_id.fetch_add(1, Ordering::SeqCst); - self.handles.write().insert(new_id, clock); - Ok(new_id) - } - fn read(&self, id: usize, buf: &mut [u8]) -> Result<usize> { let clock = { let handles = self.handles.read();