From 074960155dca8a22a10576b5a9fad06e88a24207 Mon Sep 17 00:00:00 2001 From: Ian Moffett Date: Thu, 5 Jun 2025 20:20:29 -0400 Subject: kernel: vm: Support NULL `addr' for private mmap() Signed-off-by: Ian Moffett --- sys/vm/vm_map.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'sys/vm/vm_map.c') diff --git a/sys/vm/vm_map.c b/sys/vm/vm_map.c index e0644fa..26effdb 100644 --- a/sys/vm/vm_map.c +++ b/sys/vm/vm_map.c @@ -245,11 +245,6 @@ mmap(void *addr, size_t len, int prot, int flags, int fildes, off_t off) goto done; } - if (addr == NULL) { - pr_error("mmap: NULL addr not supported\n"); - return NULL; - } - /* Only allocate new obj if needed */ if (map_obj == NULL) { map_obj = dynalloc(sizeof(*map_obj)); @@ -278,6 +273,12 @@ mmap(void *addr, size_t len, int prot, int flags, int fildes, off_t off) return NULL; } + /* TODO: copy-on-write */ + if (addr == NULL) { + va = pg->phys_addr; + addr = (void *)va; + } + pa = pg->phys_addr; error = vm_map(vas, va + page_off, pa, prot, len); if (error < 0) { -- cgit v1.2.3