summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/kern/kern_proc.c3
-rw-r--r--sys/kern/kern_spawn.c5
2 files changed, 3 insertions, 5 deletions
diff --git a/sys/kern/kern_proc.c b/sys/kern/kern_proc.c
index 8840940..8bc5680 100644
--- a/sys/kern/kern_proc.c
+++ b/sys/kern/kern_proc.c
@@ -39,6 +39,8 @@
#include <string.h>
#include <crc32.h>
+extern volatile size_t g_nthreads;
+
pid_t
getpid(void)
{
@@ -114,6 +116,7 @@ proc_init(struct proc *td, struct proc *parent)
/* Add to parent leafq */
TAILQ_INSERT_TAIL(&parent->leafq, td, leaf_link);
atomic_inc_int(&parent->nleaves);
+ atomic_inc_64(&g_nthreads);
td->parent = parent;
td->exit_status = -1;
td->cred = parent->cred;
diff --git a/sys/kern/kern_spawn.c b/sys/kern/kern_spawn.c
index 5f9262d..7962ced 100644
--- a/sys/kern/kern_spawn.c
+++ b/sys/kern/kern_spawn.c
@@ -34,10 +34,8 @@
#include <sys/mman.h>
#include <sys/systm.h>
#include <sys/errno.h>
-#include <sys/atomic.h>
#include <sys/syslog.h>
#include <sys/syscall.h>
-#include <sys/atomic.h>
#include <sys/signal.h>
#include <sys/limits.h>
#include <sys/sched.h>
@@ -50,7 +48,6 @@
#define ARGVP_MAX (ARG_MAX / sizeof(void *))
static size_t next_pid = 1;
-extern volatile size_t g_nthreads;
/*
* TODO: envp
@@ -183,8 +180,6 @@ spawn(struct proc *cur, void(*func)(void), void *p, int flags, struct proc **new
}
newproc->data = p;
- atomic_inc_64(&g_nthreads);
-
newproc->pid = next_pid++;
sched_enqueue_td(newproc);
pid = newproc->pid;