diff --git a/kernel/proc/proc.c b/kernel/proc/proc.c index cca320e..3b13070 100644 --- a/kernel/proc/proc.c +++ b/kernel/proc/proc.c @@ -248,7 +248,7 @@ static struct proc* proc_find_sched (struct cpu* cpu) { int state = proc->state; - if (!proc->dead && state == PROC_READY && !(proc->flags & PROC_KPROC)) { + if (state == PROC_READY && !(proc->flags & PROC_KPROC)) { spin_unlock (&proc->lock, fp); return proc; } @@ -313,7 +313,6 @@ void proc_kill (struct proc* proc, struct reschedule_ctx* rctx) { if (cpu->proc_current == proc) cpu->proc_current = NULL; - proc->dead = true; rbtree_delete (&proc_tree, &proc->proc_tree_link); spin_unlock (&proc->lock, fp); diff --git a/kernel/proc/proc.h b/kernel/proc/proc.h index ec6b2bd..8d016a7 100644 --- a/kernel/proc/proc.h +++ b/kernel/proc/proc.h @@ -43,7 +43,6 @@ struct proc { spin_lock_t lock; struct cpu* cpu; int state; - bool dead; uintptr_t uvaddr_argument; void* mail_recv_buffer; size_t mail_recv_size; diff --git a/kernel/syscall/syscall.c b/kernel/syscall/syscall.c index b59f68f..3d99991 100644 --- a/kernel/syscall/syscall.c +++ b/kernel/syscall/syscall.c @@ -762,8 +762,6 @@ DEFINE_SYSCALL (sys_get_exec_pid) { /* wait_for_pid (int pid) */ DEFINE_SYSCALL (sys_wait_for_pid) { - uint64_t fp; - int pid = (int)a1; struct proc* wait_proc = proc_find_pid (pid); @@ -771,15 +769,6 @@ DEFINE_SYSCALL (sys_wait_for_pid) { if (wait_proc == NULL) return SYSRESULT (-ST_NOT_FOUND); - spin_lock (&wait_proc->lock, &fp); - - if (wait_proc->dead) { - spin_unlock (&wait_proc->lock, fp); - return SYSRESULT (-ST_NOT_FOUND); - } - - spin_unlock (&wait_proc->lock, fp); - proc_wait_for (proc, rctx, wait_proc); return SYSRESULT (ST_OK);