diff options
author | Ian Moffett <ian@osmora.org> | 2025-10-13 14:50:53 -0400 |
---|---|---|
committer | Ian Moffett <ian@osmora.org> | 2025-10-13 14:50:53 -0400 |
commit | 959dd1c5dd5b2a369a33946a081d8764bcc51e2f (patch) | |
tree | d54b5ec643c49caefda7c0071836de96e3ec8746 /src/sys | |
parent | 95da567859183162bcbb171ffdda4f1d94bc3536 (diff) |
kern: proc: Use seperate queue link for lookups
Signed-off-by: Ian Moffett <ian@osmora.org>
Diffstat (limited to 'src/sys')
-rw-r--r-- | src/sys/include/sys/proc.h | 1 | ||||
-rw-r--r-- | src/sys/os/os_proc.c | 7 |
2 files changed, 5 insertions, 3 deletions
diff --git a/src/sys/include/sys/proc.h b/src/sys/include/sys/proc.h index 0cf105e..9f5cd73 100644 --- a/src/sys/include/sys/proc.h +++ b/src/sys/include/sys/proc.h @@ -94,6 +94,7 @@ struct proc { struct spinlock maplist_lock; sigtab_t sigtab; TAILQ_HEAD(, vm_range) maplist; + TAILQ_ENTRY(proc) lup_link; TAILQ_ENTRY(proc) link; }; 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; } |