Improve the efficiency of unmap in VmMappingInner

This commit is contained in:
Chen Chengjun
2024-04-28 16:54:15 +08:00
committed by Tate, Hongliang Tian
parent ab87f473c4
commit 0594a73ac9

View File

@ -503,13 +503,13 @@ impl VmMappingInner {
let vmo_map_range = (range.start - map_to_addr + self.vmo_offset) let vmo_map_range = (range.start - map_to_addr + self.vmo_offset)
..(range.end - map_to_addr + self.vmo_offset); ..(range.end - map_to_addr + self.vmo_offset);
let page_idx_range = get_page_idx_range(&vmo_map_range); let page_idx_range = get_page_idx_range(&vmo_map_range);
for page_idx in page_idx_range { let original_mapped_pages = self.mapped_pages.clone();
if self.mapped_pages.contains(&page_idx) { let mapped_pages_in_range = original_mapped_pages.range(page_idx_range);
self.unmap_one_page(vm_space, page_idx)?; for page_idx in mapped_pages_in_range {
} self.unmap_one_page(vm_space, *page_idx)?;
} }
if may_destroy && *range == self.range() { if may_destroy && *range == self.range() {
self.is_destroyed = false; self.is_destroyed = true;
} }
Ok(()) Ok(())
} }