syscalls: munmap

This commit is contained in:
Matheus
2022-10-12 18:42:22 -03:00
parent 8dddac6f33
commit f084193f39
3 changed files with 38 additions and 2 deletions
+3 -1
View File
@@ -27,7 +27,8 @@ extern syscall_chdir
extern syscall_fstatat
extern syscall_pipe2
extern syscall_mkdir
func_count equ 26
extern syscall_munmap
func_count equ 27
func_table:
@@ -57,6 +58,7 @@ func_table:
dq syscall_fstatat
dq syscall_pipe2
dq syscall_mkdir
dq syscall_munmap
section .text
global asm_syscall_entry
+3 -1
View File
@@ -513,10 +513,12 @@ bool vmm_unmap(void* addr, size_t pagec){
spinlock_acquire(lock);
unmap(start, addr, pagec);
bool ret = unmap(start, addr, pagec);
spinlock_release(lock);
return ret;
}
bool vmm_setused(void* addr, size_t pagec, size_t mmuflags){
+32
View File
@@ -0,0 +1,32 @@
#include <kernel/vmm.h>
#include <kernel/syscalls.h>
#include <arch/cls.h>
syscallret syscall_munmap(void* addr, size_t length){
syscallret retv;
retv.ret = -1;
if(length == 0 || length % PAGE_SIZE > 0){
retv.errno = EINVAL;
return retv;
}
if(addr > USER_SPACE_END){
retv.errno = EFAULT;
return retv;
}
bool res = vmm_unmap(addr, length / PAGE_SIZE);
retv.ret = 0;
retv.errno = 0;
if(!res){
retv.errno = ENOMEM;
retv.ret = -1;
}
return retv;
}