mirror of
https://github.com/asterinas/asterinas.git
synced 2025-06-21 16:33:24 +00:00
Improve the efficiency of unmap in VmMappingInner
This commit is contained in:
committed by
Tate, Hongliang Tian
parent
ab87f473c4
commit
0594a73ac9
@ -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(())
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user