summaryrefslogtreecommitdiff
path: root/src/sys/os
diff options
context:
space:
mode:
authorIan Moffett <ian@osmora.org>2025-10-13 14:50:53 -0400
committerIan Moffett <ian@osmora.org>2025-10-13 14:50:53 -0400
commit959dd1c5dd5b2a369a33946a081d8764bcc51e2f (patch)
treed54b5ec643c49caefda7c0071836de96e3ec8746 /src/sys/os
parent95da567859183162bcbb171ffdda4f1d94bc3536 (diff)
kern: proc: Use seperate queue link for lookups
Signed-off-by: Ian Moffett <ian@osmora.org>
Diffstat (limited to 'src/sys/os')
-rw-r--r--src/sys/os/os_proc.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/sys/os/os_proc.c b/src/sys/os/os_proc.c
index decb41e..971a6c0 100644
--- a/src/sys/os/os_proc.c
+++ b/src/sys/os/os_proc.c
@@ -218,7 +218,6 @@ proc_init(struct proc *procp, int flags)
return error;
}
- TAILQ_INSERT_TAIL(&procq, procp, link);
return 0;
}
@@ -230,7 +229,7 @@ proc_lookup(pid_t pid)
{
struct proc *curproc;
- TAILQ_FOREACH(curproc, &procq, link) {
+ TAILQ_FOREACH(curproc, &procq, lup_link) {
if (curproc == NULL) {
continue;
}
@@ -280,7 +279,7 @@ proc_kill(struct proc *procp, int status)
procp->flags |= PROC_EXITING;
proc_clear_ranges(procp);
- TAILQ_REMOVE(&procq, procp, link);
+ TAILQ_REMOVE(&procq, procp, lup_link);
return md_proc_kill(procp, 0);
}
@@ -340,6 +339,8 @@ proc_spawn(const char *path, struct penv_blk *envbp)
proc->envblk = envbp;
md_set_ip(proc, elf.entrypoint);
sched_enq(&core->scq, proc);
+
+ TAILQ_INSERT_TAIL(&procq, proc, lup_link);
return proc->pid;
}