From ce474c670b97fb1e3dbe5be26bdad2992f142fba Mon Sep 17 00:00:00 2001 From: Matheus Date: Tue, 13 Dec 2022 23:43:26 -0300 Subject: [PATCH] vmm: dealwithrequest returns an errno rather than a bool --- src/include/kernel/vmm.h | 2 +- src/sys/mm/vmm.c | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/include/kernel/vmm.h b/src/include/kernel/vmm.h index 8688f083..c4066209 100644 --- a/src/include/kernel/vmm.h +++ b/src/include/kernel/vmm.h @@ -57,7 +57,7 @@ typedef struct { void vmm_init(); void vmm_destroy(vmm_context* ctx); void* vmm_tophysical(void* addr); -bool vmm_dealwithrequest(void* addr, long error, bool user); +int vmm_dealwithrequest(void* addr, long error, bool user); bool vmm_setused(void* addr, size_t pagec, size_t mmuflags); bool vmm_unmap(void* addr, size_t pagec); bool vmm_map(void* paddr, void* vaddr, size_t pagec, size_t mmuflags); diff --git a/src/sys/mm/vmm.c b/src/sys/mm/vmm.c index f36f3b2c..6e9dac3c 100644 --- a/src/sys/mm/vmm.c +++ b/src/sys/mm/vmm.c @@ -638,27 +638,27 @@ bool vmm_allocnowat(void* addr, size_t mmuflags, size_t size){ // called by the page fault handler -bool vmm_dealwithrequest(void* addr, long error, bool user){ +int vmm_dealwithrequest(void* addr, long error, bool user){ if(user && addr > USER_SPACE_END) - return false; + return EFAULT; int* lock; vmm_mapping** start = NULL; getcontextinfo(addr, &lock, &start); - if(!start) return false; + if(!start) return EFAULT; spinlock_acquire(lock); - bool status; + int status; vmm_mapping* map = findmappingfromaddr(*start, addr); void* paddr; if((!map) || map->type == VMM_TYPE_FREE){ - status = false; + status = EFAULT; goto done; } @@ -675,7 +675,7 @@ bool vmm_dealwithrequest(void* addr, long error, bool user){ if(goodmmuflags != (map->mmuflags & goodmmuflags)){ - status = false; + status = EFAULT; goto done; } @@ -697,7 +697,7 @@ bool vmm_dealwithrequest(void* addr, long error, bool user){ if(addr == NULL || arch_mmu_map(cls->context->context, paddr, addr, map->mmuflags) == false){ - status = false; + status = ENOMEM; goto done; } @@ -709,7 +709,7 @@ bool vmm_dealwithrequest(void* addr, long error, bool user){ vfs_read(&err, map->data, addr, PAGE_SIZE, map->offset + offset, NULL); } - status = true; + status = 0; done: