From 60e3e0af34627da4958e94480ddb170e66a461af Mon Sep 17 00:00:00 2001 From: 4lDO2 <4lDO2@protonmail.com> Date: Sun, 10 Jul 2022 15:19:57 +0200 Subject: [PATCH] Flush less frequently in funmap. --- src/syscall/fs.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/syscall/fs.rs b/src/syscall/fs.rs index 21fc692..40ea1dd 100644 --- a/src/syscall/fs.rs +++ b/src/syscall/fs.rs @@ -8,7 +8,7 @@ use crate::context::file::{FileDescriptor, FileDescription}; use crate::context::memory::Region; use crate::context; use crate::memory::PAGE_SIZE; -use crate::paging::VirtualAddress; +use crate::paging::{ActivePageTable, mapper::PageFlushAll, TableKind, VirtualAddress}; use crate::scheme::{self, FileHandle}; use crate::syscall::data::{Packet, Stat}; use crate::syscall::error::*; @@ -479,6 +479,7 @@ pub fn funmap(virtual_address: usize, length: usize) -> Result { let virtual_address = VirtualAddress::new(virtual_address); let requested = Region::new(virtual_address, length); + let mut flusher = PageFlushAll::new(); { let context_lock = Arc::clone(context::contexts().current().ok_or(Error::new(ESRCH))?); @@ -506,10 +507,9 @@ pub fn funmap(virtual_address: usize, length: usize) -> Result { if let Some(after) = after { grants.insert(after); } - use crate::paging::{ActivePageTable, mapper::PageFlushAll, TableKind}; // Remove irrelevant region - grant.unmap(&mut *unsafe { ActivePageTable::new(TableKind::User) }, PageFlushAll::new()); + grant.unmap(&mut *unsafe { ActivePageTable::new(TableKind::User) }, &mut flusher); } }