From 3d99d2fbd600091a3dec0697e35dddfca17621ab Mon Sep 17 00:00:00 2001 From: Ian Moffett Date: Tue, 25 Mar 2025 10:24:49 -0400 Subject: kernel: vm: Add initial mmap() impl Signed-off-by: Ian Moffett --- sys/kern/kern_fork.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'sys/kern') diff --git a/sys/kern/kern_fork.c b/sys/kern/kern_fork.c index 6feeee2..abb7707 100644 --- a/sys/kern/kern_fork.c +++ b/sys/kern/kern_fork.c @@ -27,6 +27,8 @@ * POSSIBILITY OF SUCH DAMAGE. */ +#include +#include #include #include #include @@ -49,12 +51,17 @@ int fork1(struct proc *cur, int flags, void(*ip)(void), struct proc **newprocp) { struct proc *newproc; + struct mmap_lgdr *mlgdr; int status = 0; newproc = dynalloc(sizeof(*newproc)); if (newproc == NULL) return -ENOMEM; + mlgdr = dynalloc(sizeof(*mlgdr)); + if (mlgdr == NULL) + return -ENOMEM; + memset(newproc, 0, sizeof(*newproc)); status = md_fork(newproc, cur, (uintptr_t)ip); if (status != 0) @@ -64,6 +71,11 @@ fork1(struct proc *cur, int flags, void(*ip)(void), struct proc **newprocp) if (newprocp != NULL) *newprocp = newproc; + /* Initialize the mmap ledger */ + mlgdr->nbytes = 0; + RBT_INIT(lgdr_entries, &mlgdr->hd); + newproc->mlgdr = mlgdr; + newproc->pid = ++nthreads; signals_init(newproc); sched_enqueue_td(newproc); -- cgit v1.2.3