diff --git a/kernel/proc/proc.c b/kernel/proc/proc.c index 7004043..105229d 100644 --- a/kernel/proc/proc.c +++ b/kernel/proc/proc.c @@ -239,7 +239,9 @@ void proc_sched(void *cpustate) { } void proc_kill(Proc *proc) { + spinlock_acquire(&PROCS.spinlock); proc->state = PROC_ZOMBIE; + spinlock_release(&PROCS.spinlock); } void proc_killself(void) { diff --git a/kernel/syscall/proc.c b/kernel/syscall/proc.c index 51751d0..18dd392 100644 --- a/kernel/syscall/proc.c +++ b/kernel/syscall/proc.c @@ -125,7 +125,9 @@ int32_t SYSCALL1(sys_proc_run, pid1) { goto done; } + spinlock_acquire(&PROCS.spinlock); proc->state = PROC_READY; + spinlock_release(&PROCS.spinlock); done: return ret;