diff --git a/src/number.rs b/src/number.rs index 2e69098a7bbe85f71ac1523bf390ec3100005a59..6572cc2ffd47ad56d089c73d68d132ecc7a6ceb6 100644 --- a/src/number.rs +++ b/src/number.rs @@ -30,7 +30,8 @@ pub const SYS_FEXEC: usize = SYS_CLASS_FILE | 11; pub const SYS_FMAP: usize = SYS_CLASS_FILE | SYS_ARG_SLICE | 90; pub const SYS_FMAP2: usize = SYS_CLASS_FILE | SYS_ARG_SLICE | 900; pub const SYS_FUNMAP: usize = SYS_CLASS_FILE | 91; -pub const SYS_FUNMAP2: usize = SYS_CLASS_FILE | 92; +pub const SYS_FUNMAP2: usize = SYS_CLASS_FILE | 92; +pub const SYS_FUNMAP3: usize = SYS_CLASS_FILE | 95; pub const SYS_FPATH: usize = SYS_CLASS_FILE | SYS_ARG_MSLICE | 928; pub const SYS_FRENAME: usize = SYS_CLASS_FILE | SYS_ARG_PATH | 38; pub const SYS_FSTAT: usize = SYS_CLASS_FILE | SYS_ARG_MSLICE | 28; diff --git a/src/scheme/scheme.rs b/src/scheme/scheme.rs index bc2476d3739cdfe2f0a3b7b7696299dcaf321dab..13725fc32c1663842dc754ba9c13d4f4f36bc80c 100644 --- a/src/scheme/scheme.rs +++ b/src/scheme/scheme.rs @@ -33,6 +33,7 @@ pub trait Scheme { }, SYS_FUNMAP => self.funmap(packet.b), SYS_FUNMAP2 => self.funmap2(packet.b, packet.c), + SYS_FUNMAP3 => self.funmap3(packet.b, packet.c, packet.d), SYS_FPATH => self.fpath(packet.b, unsafe { slice::from_raw_parts_mut(packet.c as *mut u8, packet.d) }), SYS_FRENAME => self.frename(packet.b, unsafe { slice::from_raw_parts(packet.c as *const u8, packet.d) }, packet.uid, packet.gid), SYS_FSTAT => if packet.d >= mem::size_of::() { @@ -144,7 +145,12 @@ pub trait Scheme { } #[allow(unused_variables)] - fn funmap2(&self, address: usize, length: usize) -> Result { + fn funmap2(&self, address: usize, size: usize) -> Result { + Ok(0) + } + + #[allow(unused_variables)] + fn funmap3(&self, id: usize, address: usize, size: usize) -> Result { Ok(0) } diff --git a/src/scheme/scheme_block.rs b/src/scheme/scheme_block.rs index 772a74c76d6228805a6af1fc30ec3a73245e2a67..bb29924d01d1a0feba77a54d1156cfd6e17cf83c 100644 --- a/src/scheme/scheme_block.rs +++ b/src/scheme/scheme_block.rs @@ -33,6 +33,7 @@ pub trait SchemeBlock { }, SYS_FUNMAP => self.funmap(packet.b), SYS_FUNMAP2 => self.funmap2(packet.b, packet.c), + SYS_FUNMAP3 => self.funmap3(packet.b, packet.c, packet.d), SYS_FPATH => self.fpath(packet.b, unsafe { slice::from_raw_parts_mut(packet.c as *mut u8, packet.d) }), SYS_FRENAME => self.frename(packet.b, unsafe { slice::from_raw_parts(packet.c as *const u8, packet.d) }, packet.uid, packet.gid), SYS_FSTAT => if packet.d >= mem::size_of::() { @@ -144,7 +145,12 @@ pub trait SchemeBlock { } #[allow(unused_variables)] - fn funmap2(&self, address: usize, length: usize) -> Result> { + fn funmap2(&self, address: usize, size: usize) -> Result> { + Ok(Some(0)) + } + + #[allow(unused_variables)] + fn funmap3(&self, id: usize, address: usize, size: usize) -> Result> { Ok(Some(0)) } diff --git a/src/scheme/scheme_block_mut.rs b/src/scheme/scheme_block_mut.rs index e2f904006eac29ca7dc8992f1e5c1f1bf127f2e0..160b84a9991a16fbffb0bdeb41ad38642626b1ba 100644 --- a/src/scheme/scheme_block_mut.rs +++ b/src/scheme/scheme_block_mut.rs @@ -33,6 +33,7 @@ pub trait SchemeBlockMut { }, SYS_FUNMAP => self.funmap(packet.b), SYS_FUNMAP2 => self.funmap2(packet.b, packet.c), + SYS_FUNMAP3 => self.funmap3(packet.b, packet.c, packet.d), SYS_FPATH => self.fpath(packet.b, unsafe { slice::from_raw_parts_mut(packet.c as *mut u8, packet.d) }), SYS_FRENAME => self.frename(packet.b, unsafe { slice::from_raw_parts(packet.c as *const u8, packet.d) }, packet.uid, packet.gid), SYS_FSTAT => if packet.d >= mem::size_of::() { @@ -144,7 +145,12 @@ pub trait SchemeBlockMut { } #[allow(unused_variables)] - fn funmap2(&mut self, address: usize, length: usize) -> Result> { + fn funmap2(&mut self, address: usize, size: usize) -> Result> { + Ok(Some(0)) + } + + #[allow(unused_variables)] + fn funmap3(&mut self, id: usize, address: usize, size: usize) -> Result> { Ok(Some(0)) } diff --git a/src/scheme/scheme_mut.rs b/src/scheme/scheme_mut.rs index 8cfe110f9c394bdf527d99034d68fab832756c70..a6f0bb1e1460c361c267c77cc2c0691ff4c36cc6 100644 --- a/src/scheme/scheme_mut.rs +++ b/src/scheme/scheme_mut.rs @@ -33,6 +33,7 @@ pub trait SchemeMut { }, SYS_FUNMAP => self.funmap(packet.b), SYS_FUNMAP2 => self.funmap2(packet.b, packet.c), + SYS_FUNMAP3 => self.funmap3(packet.b, packet.c, packet.d), SYS_FPATH => self.fpath(packet.b, unsafe { slice::from_raw_parts_mut(packet.c as *mut u8, packet.d) }), SYS_FRENAME => self.frename(packet.b, unsafe { slice::from_raw_parts(packet.c as *const u8, packet.d) }, packet.uid, packet.gid), SYS_FSTAT => if packet.d >= mem::size_of::() { @@ -144,7 +145,12 @@ pub trait SchemeMut { } #[allow(unused_variables)] - fn funmap2(&mut self, address: usize, length: usize) -> Result { + fn funmap2(&mut self, address: usize, size: usize) -> Result { + Ok(0) + } + + #[allow(unused_variables)] + fn funmap3(&mut self, id: usize, address: usize, size: usize) -> Result { Ok(0) }