diff options
author | Ian Moffett <ian@osmora.org> | 2024-04-25 14:26:33 -0400 |
---|---|---|
committer | Ian Moffett <ian@osmora.org> | 2024-04-25 14:28:51 -0400 |
commit | 5ada17916af15077da6ec443ee094e69dc6ed704 (patch) | |
tree | 0ff8526a611fad9ffc6334cac0a6c342f518a40c /sys | |
parent | 35fbcb94cead0a487b6a6a4e9d86bc7eb7b9fba2 (diff) |
kernel: vm_map: Refactor mmap()
Signed-off-by: Ian Moffett <ian@osmora.org>
Diffstat (limited to 'sys')
-rw-r--r-- | sys/vm/vm_map.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/sys/vm/vm_map.c b/sys/vm/vm_map.c index f022e7a..4f7aadc 100644 --- a/sys/vm/vm_map.c +++ b/sys/vm/vm_map.c @@ -333,7 +333,6 @@ mmap(void *addr, size_t len, int prot, int flags, int fildes, off_t off) { const int PROT_MASK = PROT_WRITE | PROT_EXEC; const size_t GRANULE = vm_get_page_size(); - uintptr_t map_end, map_start; struct proc *td = this_td(); @@ -355,9 +354,8 @@ mmap(void *addr, size_t len, int prot, int flags, int fildes, off_t off) if (mapping == NULL) return MAP_FAILED; + /* Setup prot and mapping start */ mapping->prot = prot | PROT_USER; - - /* Setup mapping start */ map_start = __ALIGN_DOWN(va, GRANULE); /* @@ -386,7 +384,9 @@ mmap(void *addr, size_t len, int prot, int flags, int fildes, off_t off) mapping->vmobj = vmobj; mapping->physmem_base = 0; - } else if (physmem != 0) { + } + + if (addr == NULL && physmem != 0) { map_start = physmem + mapoff; vm_map((void *)map_start, physmem, prot, len); addr = (void *)physmem; |