[Zion] Add a AddressSpaceUnmap syscall to free memory.

This commit is contained in:
Drew Galbraith 2023-11-19 18:55:44 -08:00
parent e668428d9d
commit 30b6511467
9 changed files with 60 additions and 18 deletions

View file

@ -15,10 +15,19 @@ z_err_t AddressSpaceMap(ZAddressSpaceMapReq* req) {
// FIXME: Validation necessary.
if (req->vmas_offset != 0) {
vmas->MapInMemoryObject(req->vmas_offset, vmmo);
RET_ERR(vmas->MapInMemoryObject(req->vmas_offset, vmmo));
*req->vaddr = req->vmas_offset;
} else {
*req->vaddr = vmas->MapInMemoryObject(vmmo);
ASSIGN_OR_RETURN(*req->vaddr, vmas->MapInMemoryObject(vmmo));
}
return glcr::OK;
}
z_err_t AddressSpaceUnmap(ZAddressSpaceUnmapReq* req) {
auto& curr_proc = gScheduler->CurrentProcess();
auto vmas_cap = curr_proc.GetCapability(req->vmas_cap);
RET_ERR(ValidateCapability<AddressSpace>(vmas_cap, kZionPerm_Write));
auto vmas = vmas_cap->obj<AddressSpace>();
return vmas->FreeAddressRange(req->lower_addr, req->upper_addr);
}