From 015984a53e6b9b089566762ec00973d3aa126ae3 Mon Sep 17 00:00:00 2001 From: Ian Moffett Date: Wed, 16 Jul 2025 19:33:13 -0400 Subject: kernel: proc: Decrement proc count on exit Previously, our process counter was monotonic (wuh oh!). We want to be sure that it decrements when a process exits. - Rename nthreads to g_nthreads as a global - Atomically increment on enter and decrement on exit Signed-off-by: Ian Moffett --- sys/kern/kern_spawn.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'sys/kern/kern_spawn.c') diff --git a/sys/kern/kern_spawn.c b/sys/kern/kern_spawn.c index fcaa194..37c3120 100644 --- a/sys/kern/kern_spawn.c +++ b/sys/kern/kern_spawn.c @@ -33,6 +33,7 @@ #include #include #include +#include #include #include #include @@ -47,7 +48,8 @@ #define ARGVP_MAX (ARG_MAX / sizeof(void *)) -static volatile size_t nthreads = 0; +static size_t next_pid = 1; +volatile size_t g_nthreads = 0; /* * TODO: envp @@ -166,7 +168,8 @@ spawn(struct proc *cur, void(*func)(void), void *p, int flags, struct proc **new newproc->mlgdr = mlgdr; newproc->flags |= PROC_WAITED; - newproc->pid = ++nthreads; + atomic_inc_64(&g_nthreads); + newproc->pid = next_pid++; signals_init(newproc); sched_enqueue_td(newproc); pid = newproc->pid; -- cgit v1.2.3