mirror of
https://github.com/DragonOS-Community/DragonOS.git
synced 2025-06-20 01:46:31 +00:00
完善重映射过程中获取新映射区域时的map_flags (#569)
This commit is contained in:
@ -129,6 +129,10 @@ impl Into<MapFlags> for VmFlags {
|
||||
map_flags |= MapFlags::MAP_SYNC;
|
||||
}
|
||||
|
||||
if self.contains(VmFlags::VM_MAYSHARE) {
|
||||
map_flags |= MapFlags::MAP_SHARED;
|
||||
}
|
||||
|
||||
map_flags
|
||||
}
|
||||
}
|
||||
|
@ -409,18 +409,19 @@ impl InnerAddressSpace {
|
||||
return Err(SystemError::EINVAL);
|
||||
}
|
||||
|
||||
// 初始化映射标志
|
||||
let mut map_flags: MapFlags = vm_flags.into();
|
||||
// 初始化内存区域保护标志
|
||||
let prot_flags: ProtFlags = vm_flags.into();
|
||||
|
||||
// 取消新内存区域的原映射
|
||||
if mremap_flags.contains(MremapFlags::MREMAP_FIXED) {
|
||||
map_flags |= MapFlags::MAP_FIXED;
|
||||
let start_page = VirtPageFrame::new(new_vaddr);
|
||||
let page_count = PageFrameCount::from_bytes(new_len).unwrap();
|
||||
self.munmap(start_page, page_count)?;
|
||||
}
|
||||
|
||||
// 初始化映射标志
|
||||
let map_flags: MapFlags = vm_flags.into();
|
||||
// 初始化内存区域保护标志
|
||||
let prot_flags: ProtFlags = vm_flags.into();
|
||||
|
||||
// 获取映射后的新内存页面
|
||||
let new_page = self.map_anonymous(new_vaddr, new_len, prot_flags, map_flags, true)?;
|
||||
let new_page_vaddr = new_page.virt_address();
|
||||
|
Reference in New Issue
Block a user