From 21b3cd34a8f01c446bbb92d2b2b6ded240f6b6c8 Mon Sep 17 00:00:00 2001 From: 4lDO2 <4lDO2@protonmail.com> Date: Wed, 8 Jul 2020 17:35:24 +0200 Subject: [PATCH] Change the default fmap2 impl to use fmap. --- src/scheme/generate.sh | 1 + src/scheme/scheme.rs | 19 +++++++++---------- src/scheme/scheme_block.rs | 21 ++++++++++----------- src/scheme/scheme_block_mut.rs | 21 ++++++++++----------- src/scheme/scheme_mut.rs | 19 +++++++++---------- 5 files changed, 39 insertions(+), 42 deletions(-) diff --git a/src/scheme/generate.sh b/src/scheme/generate.sh index f95bf8a..36a651e 100755 --- a/src/scheme/generate.sh +++ b/src/scheme/generate.sh @@ -12,6 +12,7 @@ sed 's/trait Scheme/trait SchemeBlock/' scheme.rs \ | sed 's/fn handle(\&self, packet: \&mut Packet)/fn handle(\&self, packet: \&Packet) -> Option/' \ | sed 's/packet.a = Error::mux(res);/res.transpose().map(Error::mux)/' \ | sed 's/\.map(|f| f\.bits())/\.map(|f| f.map(|f| f.bits()))/' \ +| sed 's/\.map(|o| o as usize)/.map(|o| o.map(|o| o as usize))/' \ | sed 's/Result<\([^>]\+\)>/Result>/g' \ > scheme_block.rs diff --git a/src/scheme/scheme.rs b/src/scheme/scheme.rs index 00e4839..0af8bb5 100644 --- a/src/scheme/scheme.rs +++ b/src/scheme/scheme.rs @@ -123,19 +123,18 @@ pub trait Scheme { #[allow(unused_variables)] fn fmap(&self, id: usize, map: &Map) -> Result { - if map.flags.contains(MapFlags::MAP_FIXED) { - return Err(Error::new(EINVAL)); - } - self.fmap2(id, &Map2 { - offset: map.offset, - size: map.size, - flags: map.flags, - address: 0, - }) + Err(Error::new(EBADF)) } #[allow(unused_variables)] fn fmap2(&self, id: usize, map: &Map2) -> Result { - Err(Error::new(EBADF)) + if map.flags.contains(MapFlags::MAP_FIXED) { + return Err(Error::new(EINVAL)); + } + self.fmap(id, &Map { + offset: map.offset, + size: map.size, + flags: map.flags, + }) } #[allow(unused_variables)] diff --git a/src/scheme/scheme_block.rs b/src/scheme/scheme_block.rs index 04be058..5b51e22 100644 --- a/src/scheme/scheme_block.rs +++ b/src/scheme/scheme_block.rs @@ -16,7 +16,7 @@ pub trait SchemeBlock { SYS_DUP => self.dup(packet.b, unsafe { slice::from_raw_parts(packet.c as *const u8, packet.d) }), SYS_READ => self.read(packet.b, unsafe { slice::from_raw_parts_mut(packet.c as *mut u8, packet.d) }), SYS_WRITE => self.write(packet.b, unsafe { slice::from_raw_parts(packet.c as *const u8, packet.d) }), - SYS_LSEEK => self.seek(packet.b, packet.c as isize, packet.d).map(|o| o as usize), + SYS_LSEEK => self.seek(packet.b, packet.c as isize, packet.d).map(|o| o.map(|o| o as usize)), SYS_FCHMOD => self.fchmod(packet.b, packet.c as u16), SYS_FCHOWN => self.fchown(packet.b, packet.c as u32, packet.d as u32), SYS_FCNTL => self.fcntl(packet.b, packet.c, packet.d), @@ -123,19 +123,18 @@ pub trait SchemeBlock { #[allow(unused_variables)] fn fmap(&self, id: usize, map: &Map) -> Result> { - if map.flags.contains(MapFlags::MAP_FIXED) { - return Err(Error::new(EINVAL)); - } - self.fmap2(id, &Map2 { - offset: map.offset, - size: map.size, - flags: map.flags, - address: 0, - }) + Err(Error::new(EBADF)) } #[allow(unused_variables)] fn fmap2(&self, id: usize, map: &Map2) -> Result> { - Err(Error::new(EBADF)) + if map.flags.contains(MapFlags::MAP_FIXED) { + return Err(Error::new(EINVAL)); + } + self.fmap(id, &Map { + offset: map.offset, + size: map.size, + flags: map.flags, + }) } #[allow(unused_variables)] diff --git a/src/scheme/scheme_block_mut.rs b/src/scheme/scheme_block_mut.rs index 392fb10..a006318 100644 --- a/src/scheme/scheme_block_mut.rs +++ b/src/scheme/scheme_block_mut.rs @@ -16,7 +16,7 @@ pub trait SchemeBlockMut { SYS_DUP => self.dup(packet.b, unsafe { slice::from_raw_parts(packet.c as *const u8, packet.d) }), SYS_READ => self.read(packet.b, unsafe { slice::from_raw_parts_mut(packet.c as *mut u8, packet.d) }), SYS_WRITE => self.write(packet.b, unsafe { slice::from_raw_parts(packet.c as *const u8, packet.d) }), - SYS_LSEEK => self.seek(packet.b, packet.c as isize, packet.d).map(|o| o as usize), + SYS_LSEEK => self.seek(packet.b, packet.c as isize, packet.d).map(|o| o.map(|o| o as usize)), SYS_FCHMOD => self.fchmod(packet.b, packet.c as u16), SYS_FCHOWN => self.fchown(packet.b, packet.c as u32, packet.d as u32), SYS_FCNTL => self.fcntl(packet.b, packet.c, packet.d), @@ -123,19 +123,18 @@ pub trait SchemeBlockMut { #[allow(unused_variables)] fn fmap(&mut self, id: usize, map: &Map) -> Result> { - if map.flags.contains(MapFlags::MAP_FIXED) { - return Err(Error::new(EINVAL)); - } - self.fmap2(id, &Map2 { - offset: map.offset, - size: map.size, - flags: map.flags, - address: 0, - }) + Err(Error::new(EBADF)) } #[allow(unused_variables)] fn fmap2(&mut self, id: usize, map: &Map2) -> Result> { - Err(Error::new(EBADF)) + if map.flags.contains(MapFlags::MAP_FIXED) { + return Err(Error::new(EINVAL)); + } + self.fmap(id, &Map { + offset: map.offset, + size: map.size, + flags: map.flags, + }) } #[allow(unused_variables)] diff --git a/src/scheme/scheme_mut.rs b/src/scheme/scheme_mut.rs index 391b6e3..1672067 100644 --- a/src/scheme/scheme_mut.rs +++ b/src/scheme/scheme_mut.rs @@ -123,19 +123,18 @@ pub trait SchemeMut { #[allow(unused_variables)] fn fmap(&mut self, id: usize, map: &Map) -> Result { - if map.flags.contains(MapFlags::MAP_FIXED) { - return Err(Error::new(EINVAL)); - } - self.fmap2(id, &Map2 { - offset: map.offset, - size: map.size, - flags: map.flags, - address: 0, - }) + Err(Error::new(EBADF)) } #[allow(unused_variables)] fn fmap2(&mut self, id: usize, map: &Map2) -> Result { - Err(Error::new(EBADF)) + if map.flags.contains(MapFlags::MAP_FIXED) { + return Err(Error::new(EINVAL)); + } + self.fmap(id, &Map { + offset: map.offset, + size: map.size, + flags: map.flags, + }) } #[allow(unused_variables)]