Add MunmapFlags.
This commit is contained in:
@@ -90,6 +90,15 @@ bitflags! {
|
||||
const MAP_LAZY = 0x0010;
|
||||
}
|
||||
}
|
||||
bitflags! {
|
||||
pub struct MunmapFlags: usize {
|
||||
/// Indicates whether the funmap call must implicitly do an msync, for the changes to
|
||||
/// become visible later.
|
||||
///
|
||||
/// This flag will currently be set if and only if MAP_SHARED | PROT_WRITE are set.
|
||||
const NEEDS_SYNC = 1;
|
||||
}
|
||||
}
|
||||
|
||||
pub const MODE_TYPE: u16 = 0xF000;
|
||||
pub const MODE_DIR: u16 = 0x4000;
|
||||
|
||||
@@ -62,7 +62,7 @@ pub trait Scheme {
|
||||
SYS_CLOSE => self.close(packet.b),
|
||||
|
||||
KSMSG_MMAP_PREP => self.mmap_prep(packet.b, u64::from(packet.uid) | (u64::from(packet.gid) << 32), packet.c, MapFlags::from_bits_truncate(packet.d)),
|
||||
KSMSG_MUNMAP => self.munmap(packet.b, u64::from(packet.uid) | (u64::from(packet.gid) << 32), packet.c),
|
||||
KSMSG_MUNMAP => self.munmap(packet.b, u64::from(packet.uid) | (u64::from(packet.gid) << 32), packet.c, MunmapFlags::from_bits_truncate(packet.d)),
|
||||
|
||||
_ => Err(Error::new(ENOSYS))
|
||||
};
|
||||
@@ -188,7 +188,7 @@ pub trait Scheme {
|
||||
}
|
||||
|
||||
#[allow(unused_variables)]
|
||||
fn munmap(&self, id: usize, offset: u64, size: usize) -> Result<usize> {
|
||||
fn munmap(&self, id: usize, offset: u64, size: usize, flags: MunmapFlags) -> Result<usize> {
|
||||
Err(Error::new(EOPNOTSUPP))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -62,7 +62,7 @@ pub trait SchemeBlock {
|
||||
SYS_CLOSE => self.close(packet.b),
|
||||
|
||||
KSMSG_MMAP_PREP => self.mmap_prep(packet.b, u64::from(packet.uid) | (u64::from(packet.gid) << 32), packet.c, MapFlags::from_bits_truncate(packet.d)),
|
||||
KSMSG_MUNMAP => self.munmap(packet.b, u64::from(packet.uid) | (u64::from(packet.gid) << 32), packet.c),
|
||||
KSMSG_MUNMAP => self.munmap(packet.b, u64::from(packet.uid) | (u64::from(packet.gid) << 32), packet.c, MunmapFlags::from_bits_truncate(packet.d)),
|
||||
|
||||
_ => Err(Error::new(ENOSYS))
|
||||
};
|
||||
@@ -188,7 +188,7 @@ pub trait SchemeBlock {
|
||||
}
|
||||
|
||||
#[allow(unused_variables)]
|
||||
fn munmap(&self, id: usize, offset: u64, size: usize) -> Result<Option<usize>> {
|
||||
fn munmap(&self, id: usize, offset: u64, size: usize, flags: MunmapFlags) -> Result<Option<usize>> {
|
||||
Err(Error::new(EOPNOTSUPP))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -62,7 +62,7 @@ pub trait SchemeBlockMut {
|
||||
SYS_CLOSE => self.close(packet.b),
|
||||
|
||||
KSMSG_MMAP_PREP => self.mmap_prep(packet.b, u64::from(packet.uid) | (u64::from(packet.gid) << 32), packet.c, MapFlags::from_bits_truncate(packet.d)),
|
||||
KSMSG_MUNMAP => self.munmap(packet.b, u64::from(packet.uid) | (u64::from(packet.gid) << 32), packet.c),
|
||||
KSMSG_MUNMAP => self.munmap(packet.b, u64::from(packet.uid) | (u64::from(packet.gid) << 32), packet.c, MunmapFlags::from_bits_truncate(packet.d)),
|
||||
|
||||
_ => Err(Error::new(ENOSYS))
|
||||
};
|
||||
@@ -188,7 +188,7 @@ pub trait SchemeBlockMut {
|
||||
}
|
||||
|
||||
#[allow(unused_variables)]
|
||||
fn munmap(&mut self, id: usize, offset: u64, size: usize) -> Result<Option<usize>> {
|
||||
fn munmap(&mut self, id: usize, offset: u64, size: usize, flags: MunmapFlags) -> Result<Option<usize>> {
|
||||
Err(Error::new(EOPNOTSUPP))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -61,8 +61,8 @@ pub trait SchemeMut {
|
||||
},
|
||||
SYS_CLOSE => self.close(packet.b),
|
||||
|
||||
KSMSG_MMAP_PREP => self.mmap_prep(packet.b, MapFlags::from_bits_truncate(packet.c), packet.d, u64::from(packet.uid) | (u64::from(packet.gid) << 32)),
|
||||
KSMSG_MUNMAP => self.munmap(packet.b, packet.c, u64::from(packet.uid) | (u64::from(packet.gid) << 32)),
|
||||
KSMSG_MMAP_PREP => self.mmap_prep(packet.b, u64::from(packet.uid) | (u64::from(packet.gid) << 32), packet.c, MapFlags::from_bits_truncate(packet.d)),
|
||||
KSMSG_MUNMAP => self.munmap(packet.b, u64::from(packet.uid) | (u64::from(packet.gid) << 32), packet.c, MunmapFlags::from_bits_truncate(packet.d)),
|
||||
|
||||
_ => Err(Error::new(ENOSYS))
|
||||
};
|
||||
@@ -183,12 +183,12 @@ pub trait SchemeMut {
|
||||
}
|
||||
|
||||
#[allow(unused_variables)]
|
||||
fn mmap_prep(&mut self, id: usize, flags: MapFlags, size: usize, offset: u64) -> Result<usize> {
|
||||
fn mmap_prep(&mut self, id: usize, offset: u64, size: usize, flags: MapFlags) -> Result<usize> {
|
||||
Err(Error::new(EOPNOTSUPP))
|
||||
}
|
||||
|
||||
#[allow(unused_variables)]
|
||||
fn munmap(&mut self, id: usize, size: usize, offset: u64) -> Result<usize> {
|
||||
fn munmap(&mut self, id: usize, offset: u64, size: usize, flags: MunmapFlags) -> Result<usize> {
|
||||
Err(Error::new(EOPNOTSUPP))
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user