Simplify `fill_zeros_remote` and others

This commit is contained in:
Ruihan Li 2025-12-12 11:21:14 +08:00 committed by Tate, Hongliang Tian
parent eb76ded5fc
commit d18b1dc624
2 changed files with 8 additions and 17 deletions

View File

@ -2,9 +2,7 @@
use align_ext::AlignExt;
use ostd::{
mm::{
HasSize, PAGE_SIZE, PageFlags, UFrame, io_util::HasVmReaderWriter, vm_space::VmQueriedItem,
},
mm::{PAGE_SIZE, PageFlags, UFrame, io_util::HasVmReaderWriter, vm_space::VmQueriedItem},
task::disable_preempt,
};
@ -76,14 +74,11 @@ impl Vmar {
) -> core::result::Result<usize, (Error, usize)> {
let mut remain = len;
let write = |frame: UFrame, skip_offset: usize| {
let frame_size = frame.size();
let mut writer = frame.writer().to_fallible();
let mut writer = frame.writer();
writer.skip(skip_offset);
let to_write = remain.min(frame_size - skip_offset);
let res = writer.fill_zeros(to_write);
let (Ok(n) | Err((_, n))) = &res;
remain -= *n;
res
let res = writer.fill_zeros(remain);
remain -= res;
Ok(res)
};
self.access_remote(vaddr, len, PageFlags::W, write)

View File

@ -157,17 +157,13 @@ impl VmarInner {
return Ok(());
};
let rlimt_as = process
let rlimit_as = process
.resource_limits()
.get_rlimit(ResourceType::RLIMIT_AS)
.get_cur();
let new_total_vm = self
.total_vm
.checked_add(expand_size)
.ok_or(Errno::ENOMEM)?;
if new_total_vm > rlimt_as as usize {
return_errno_with_message!(Errno::ENOMEM, "address space limit overflow");
if rlimit_as.saturating_sub(self.total_vm as u64) < expand_size as u64 {
return_errno_with_message!(Errno::ENOMEM, "the address space size limit is reached");
}
Ok(())
}