Remove scheme funmap methods.
This commit is contained in:
+7
-1
@@ -54,11 +54,18 @@ pub const FUTEX_WAKE: usize = 1;
|
||||
pub const FUTEX_REQUEUE: usize = 2;
|
||||
pub const FUTEX_WAIT64: usize = 3;
|
||||
|
||||
// packet.c = fd
|
||||
pub const SKMSG_FRETURNFD: usize = 0;
|
||||
|
||||
// packet.uid:packet.gid = offset, packet.c = page_count
|
||||
pub const SKMSG_PROVIDE_MMAP: usize = 1;
|
||||
|
||||
bitflags! {
|
||||
pub struct MapFlags: usize {
|
||||
// TODO: Downgrade PROT_NONE to global constant? (bitflags specifically states zero flags
|
||||
// can cause buggy behavior).
|
||||
const PROT_NONE = 0x0000_0000;
|
||||
|
||||
const PROT_EXEC = 0x0001_0000;
|
||||
const PROT_WRITE = 0x0002_0000;
|
||||
const PROT_READ = 0x0004_0000;
|
||||
@@ -66,7 +73,6 @@ bitflags! {
|
||||
const MAP_SHARED = 0x0001;
|
||||
const MAP_PRIVATE = 0x0002;
|
||||
|
||||
/// Only accepted for mmap2(2).
|
||||
const MAP_FIXED = 0x0004;
|
||||
const MAP_FIXED_NOREPLACE = 0x000C;
|
||||
}
|
||||
|
||||
@@ -37,9 +37,16 @@ pub const SYS_FSYNC: usize = SYS_CLASS_FILE | 118;
|
||||
pub const SYS_FTRUNCATE: usize = SYS_CLASS_FILE | 93;
|
||||
pub const SYS_FUTIMENS: usize = SYS_CLASS_FILE | SYS_ARG_SLICE | 320;
|
||||
|
||||
// b = file, c = flags, d = required_page_count, uid:gid = offset
|
||||
pub const KSMSG_MMAP: usize = SYS_CLASS_FILE | 72;
|
||||
|
||||
// b = file, c = flags, d = page_count, uid:gid = offset
|
||||
pub const KSMSG_MSYNC: usize = SYS_CLASS_FILE | 73;
|
||||
|
||||
// b = file, c = page_count, uid:gid = offset
|
||||
pub const KSMSG_MUNMAP: usize = SYS_CLASS_FILE | 74;
|
||||
|
||||
// b = file, c = flags, d = page_count, uid:gid = offset
|
||||
pub const KSMSG_MMAP_PREP: usize = SYS_CLASS_FILE | 75;
|
||||
|
||||
pub const SYS_CLOCK_GETTIME: usize = 265;
|
||||
|
||||
+1
-38
@@ -36,18 +36,6 @@ pub trait Scheme {
|
||||
SYS_FCHOWN => self.fchown(packet.b, packet.c as u32, packet.d as u32),
|
||||
SYS_FCNTL => self.fcntl(packet.b, packet.c, packet.d),
|
||||
SYS_FEVENT => self.fevent(packet.b, EventFlags::from_bits_truncate(packet.c)).map(|f| f.bits()),
|
||||
SYS_FMAP_OLD => if packet.d >= mem::size_of::<OldMap>() {
|
||||
self.fmap_old(packet.b, unsafe { &*(packet.c as *const OldMap) })
|
||||
} else {
|
||||
Err(Error::new(EFAULT))
|
||||
},
|
||||
SYS_FMAP => if packet.d >= mem::size_of::<Map>() {
|
||||
self.fmap(packet.b, unsafe { &*(packet.c as *const Map) })
|
||||
} else {
|
||||
Err(Error::new(EFAULT))
|
||||
},
|
||||
SYS_FUNMAP_OLD => self.funmap_old(packet.b),
|
||||
SYS_FUNMAP => self.funmap(packet.b, packet.c),
|
||||
SYS_FPATH => self.fpath(packet.b, unsafe { slice::from_raw_parts_mut(packet.c as *mut u8, packet.d) }),
|
||||
SYS_FRENAME => if let Some(path) = unsafe { str_from_raw_parts(packet.c as *const u8, packet.d) } {
|
||||
self.frename(packet.b, path, packet.uid, packet.gid)
|
||||
@@ -72,6 +60,7 @@ pub trait Scheme {
|
||||
Err(Error::new(EFAULT))
|
||||
},
|
||||
SYS_CLOSE => self.close(packet.b),
|
||||
|
||||
_ => Err(Error::new(ENOSYS))
|
||||
};
|
||||
|
||||
@@ -150,32 +139,6 @@ pub trait Scheme {
|
||||
Err(Error::new(EBADF))
|
||||
}
|
||||
|
||||
#[allow(unused_variables)]
|
||||
fn fmap_old(&self, id: usize, map: &OldMap) -> Result<usize> {
|
||||
Err(Error::new(EBADF))
|
||||
}
|
||||
#[allow(unused_variables)]
|
||||
fn fmap(&self, id: usize, map: &Map) -> Result<usize> {
|
||||
if map.flags.contains(MapFlags::MAP_FIXED) {
|
||||
return Err(Error::new(EINVAL));
|
||||
}
|
||||
self.fmap_old(id, &OldMap {
|
||||
offset: map.offset,
|
||||
size: map.size,
|
||||
flags: map.flags,
|
||||
})
|
||||
}
|
||||
|
||||
#[allow(unused_variables)]
|
||||
fn funmap_old(&self, address: usize) -> Result<usize> {
|
||||
Ok(0)
|
||||
}
|
||||
|
||||
#[allow(unused_variables)]
|
||||
fn funmap(&self, address: usize, length: usize) -> Result<usize> {
|
||||
Ok(0)
|
||||
}
|
||||
|
||||
#[allow(unused_variables)]
|
||||
fn fpath(&self, id: usize, buf: &mut [u8]) -> Result<usize> {
|
||||
Err(Error::new(EBADF))
|
||||
|
||||
@@ -36,18 +36,6 @@ pub trait SchemeBlock {
|
||||
SYS_FCHOWN => self.fchown(packet.b, packet.c as u32, packet.d as u32),
|
||||
SYS_FCNTL => self.fcntl(packet.b, packet.c, packet.d),
|
||||
SYS_FEVENT => self.fevent(packet.b, EventFlags::from_bits_truncate(packet.c)).map(|f| f.map(|f| f.bits())),
|
||||
SYS_FMAP_OLD => if packet.d >= mem::size_of::<OldMap>() {
|
||||
self.fmap_old(packet.b, unsafe { &*(packet.c as *const OldMap) })
|
||||
} else {
|
||||
Err(Error::new(EFAULT))
|
||||
},
|
||||
SYS_FMAP => if packet.d >= mem::size_of::<Map>() {
|
||||
self.fmap(packet.b, unsafe { &*(packet.c as *const Map) })
|
||||
} else {
|
||||
Err(Error::new(EFAULT))
|
||||
},
|
||||
SYS_FUNMAP_OLD => self.funmap_old(packet.b),
|
||||
SYS_FUNMAP => self.funmap(packet.b, packet.c),
|
||||
SYS_FPATH => self.fpath(packet.b, unsafe { slice::from_raw_parts_mut(packet.c as *mut u8, packet.d) }),
|
||||
SYS_FRENAME => if let Some(path) = unsafe { str_from_raw_parts(packet.c as *const u8, packet.d) } {
|
||||
self.frename(packet.b, path, packet.uid, packet.gid)
|
||||
@@ -72,6 +60,7 @@ pub trait SchemeBlock {
|
||||
Err(Error::new(EFAULT))
|
||||
},
|
||||
SYS_CLOSE => self.close(packet.b),
|
||||
|
||||
_ => Err(Error::new(ENOSYS))
|
||||
};
|
||||
|
||||
@@ -150,32 +139,6 @@ pub trait SchemeBlock {
|
||||
Err(Error::new(EBADF))
|
||||
}
|
||||
|
||||
#[allow(unused_variables)]
|
||||
fn fmap_old(&self, id: usize, map: &OldMap) -> Result<Option<usize>> {
|
||||
Err(Error::new(EBADF))
|
||||
}
|
||||
#[allow(unused_variables)]
|
||||
fn fmap(&self, id: usize, map: &Map) -> Result<Option<usize>> {
|
||||
if map.flags.contains(MapFlags::MAP_FIXED) {
|
||||
return Err(Error::new(EINVAL));
|
||||
}
|
||||
self.fmap_old(id, &OldMap {
|
||||
offset: map.offset,
|
||||
size: map.size,
|
||||
flags: map.flags,
|
||||
})
|
||||
}
|
||||
|
||||
#[allow(unused_variables)]
|
||||
fn funmap_old(&self, address: usize) -> Result<Option<usize>> {
|
||||
Ok(Some(0))
|
||||
}
|
||||
|
||||
#[allow(unused_variables)]
|
||||
fn funmap(&self, address: usize, length: usize) -> Result<Option<usize>> {
|
||||
Ok(Some(0))
|
||||
}
|
||||
|
||||
#[allow(unused_variables)]
|
||||
fn fpath(&self, id: usize, buf: &mut [u8]) -> Result<Option<usize>> {
|
||||
Err(Error::new(EBADF))
|
||||
|
||||
@@ -36,18 +36,6 @@ pub trait SchemeBlockMut {
|
||||
SYS_FCHOWN => self.fchown(packet.b, packet.c as u32, packet.d as u32),
|
||||
SYS_FCNTL => self.fcntl(packet.b, packet.c, packet.d),
|
||||
SYS_FEVENT => self.fevent(packet.b, EventFlags::from_bits_truncate(packet.c)).map(|f| f.map(|f| f.bits())),
|
||||
SYS_FMAP_OLD => if packet.d >= mem::size_of::<OldMap>() {
|
||||
self.fmap_old(packet.b, unsafe { &*(packet.c as *const OldMap) })
|
||||
} else {
|
||||
Err(Error::new(EFAULT))
|
||||
},
|
||||
SYS_FMAP => if packet.d >= mem::size_of::<Map>() {
|
||||
self.fmap(packet.b, unsafe { &*(packet.c as *const Map) })
|
||||
} else {
|
||||
Err(Error::new(EFAULT))
|
||||
},
|
||||
SYS_FUNMAP_OLD => self.funmap_old(packet.b),
|
||||
SYS_FUNMAP => self.funmap(packet.b, packet.c),
|
||||
SYS_FPATH => self.fpath(packet.b, unsafe { slice::from_raw_parts_mut(packet.c as *mut u8, packet.d) }),
|
||||
SYS_FRENAME => if let Some(path) = unsafe { str_from_raw_parts(packet.c as *const u8, packet.d) } {
|
||||
self.frename(packet.b, path, packet.uid, packet.gid)
|
||||
@@ -72,6 +60,7 @@ pub trait SchemeBlockMut {
|
||||
Err(Error::new(EFAULT))
|
||||
},
|
||||
SYS_CLOSE => self.close(packet.b),
|
||||
|
||||
_ => Err(Error::new(ENOSYS))
|
||||
};
|
||||
|
||||
@@ -150,32 +139,6 @@ pub trait SchemeBlockMut {
|
||||
Err(Error::new(EBADF))
|
||||
}
|
||||
|
||||
#[allow(unused_variables)]
|
||||
fn fmap_old(&mut self, id: usize, map: &OldMap) -> Result<Option<usize>> {
|
||||
Err(Error::new(EBADF))
|
||||
}
|
||||
#[allow(unused_variables)]
|
||||
fn fmap(&mut self, id: usize, map: &Map) -> Result<Option<usize>> {
|
||||
if map.flags.contains(MapFlags::MAP_FIXED) {
|
||||
return Err(Error::new(EINVAL));
|
||||
}
|
||||
self.fmap_old(id, &OldMap {
|
||||
offset: map.offset,
|
||||
size: map.size,
|
||||
flags: map.flags,
|
||||
})
|
||||
}
|
||||
|
||||
#[allow(unused_variables)]
|
||||
fn funmap_old(&mut self, address: usize) -> Result<Option<usize>> {
|
||||
Ok(Some(0))
|
||||
}
|
||||
|
||||
#[allow(unused_variables)]
|
||||
fn funmap(&mut self, address: usize, length: usize) -> Result<Option<usize>> {
|
||||
Ok(Some(0))
|
||||
}
|
||||
|
||||
#[allow(unused_variables)]
|
||||
fn fpath(&mut self, id: usize, buf: &mut [u8]) -> Result<Option<usize>> {
|
||||
Err(Error::new(EBADF))
|
||||
|
||||
@@ -36,18 +36,6 @@ pub trait SchemeMut {
|
||||
SYS_FCHOWN => self.fchown(packet.b, packet.c as u32, packet.d as u32),
|
||||
SYS_FCNTL => self.fcntl(packet.b, packet.c, packet.d),
|
||||
SYS_FEVENT => self.fevent(packet.b, EventFlags::from_bits_truncate(packet.c)).map(|f| f.bits()),
|
||||
SYS_FMAP_OLD => if packet.d >= mem::size_of::<OldMap>() {
|
||||
self.fmap_old(packet.b, unsafe { &*(packet.c as *const OldMap) })
|
||||
} else {
|
||||
Err(Error::new(EFAULT))
|
||||
},
|
||||
SYS_FMAP => if packet.d >= mem::size_of::<Map>() {
|
||||
self.fmap(packet.b, unsafe { &*(packet.c as *const Map) })
|
||||
} else {
|
||||
Err(Error::new(EFAULT))
|
||||
},
|
||||
SYS_FUNMAP_OLD => self.funmap_old(packet.b),
|
||||
SYS_FUNMAP => self.funmap(packet.b, packet.c),
|
||||
SYS_FPATH => self.fpath(packet.b, unsafe { slice::from_raw_parts_mut(packet.c as *mut u8, packet.d) }),
|
||||
SYS_FRENAME => if let Some(path) = unsafe { str_from_raw_parts(packet.c as *const u8, packet.d) } {
|
||||
self.frename(packet.b, path, packet.uid, packet.gid)
|
||||
@@ -72,6 +60,7 @@ pub trait SchemeMut {
|
||||
Err(Error::new(EFAULT))
|
||||
},
|
||||
SYS_CLOSE => self.close(packet.b),
|
||||
|
||||
_ => Err(Error::new(ENOSYS))
|
||||
};
|
||||
|
||||
@@ -150,32 +139,6 @@ pub trait SchemeMut {
|
||||
Err(Error::new(EBADF))
|
||||
}
|
||||
|
||||
#[allow(unused_variables)]
|
||||
fn fmap_old(&mut self, id: usize, map: &OldMap) -> Result<usize> {
|
||||
Err(Error::new(EBADF))
|
||||
}
|
||||
#[allow(unused_variables)]
|
||||
fn fmap(&mut self, id: usize, map: &Map) -> Result<usize> {
|
||||
if map.flags.contains(MapFlags::MAP_FIXED) {
|
||||
return Err(Error::new(EINVAL));
|
||||
}
|
||||
self.fmap_old(id, &OldMap {
|
||||
offset: map.offset,
|
||||
size: map.size,
|
||||
flags: map.flags,
|
||||
})
|
||||
}
|
||||
|
||||
#[allow(unused_variables)]
|
||||
fn funmap_old(&mut self, address: usize) -> Result<usize> {
|
||||
Ok(0)
|
||||
}
|
||||
|
||||
#[allow(unused_variables)]
|
||||
fn funmap(&mut self, address: usize, length: usize) -> Result<usize> {
|
||||
Ok(0)
|
||||
}
|
||||
|
||||
#[allow(unused_variables)]
|
||||
fn fpath(&mut self, id: usize, buf: &mut [u8]) -> Result<usize> {
|
||||
Err(Error::new(EBADF))
|
||||
|
||||
Reference in New Issue
Block a user