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_exit.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'sys/kern/kern_exit.c') diff --git a/sys/kern/kern_exit.c b/sys/kern/kern_exit.c index 2c9e2e4..6b41cbd 100644 --- a/sys/kern/kern_exit.c +++ b/sys/kern/kern_exit.c @@ -30,6 +30,7 @@ #include #include #include +#include #include #include #include @@ -44,6 +45,8 @@ #define pr_trace(fmt, ...) kprintf("exit: " fmt, ##__VA_ARGS__) #define pr_error(...) pr_trace(__VA_ARGS__) +extern volatile size_t g_nthreads; + static void unload_td(struct proc *td) { @@ -150,6 +153,9 @@ exit1(struct proc *td, int flags) td->flags |= PROC_EXITING; parent = td->parent; + /* We have one less process in the system! */ + atomic_dec_64(&g_nthreads); + /* If we have any children, kill them too */ if (td->nleaves > 0) { TAILQ_FOREACH(procp, &td->leafq, leaf_link) { -- cgit v1.2.3