diff options
Diffstat (limited to 'kernel/proc')
-rw-r--r-- | kernel/proc/proc.c | 11 | ||||
-rw-r--r-- | kernel/proc/sched.c | 10 |
2 files changed, 14 insertions, 7 deletions
diff --git a/kernel/proc/proc.c b/kernel/proc/proc.c index a1f68f8..7ce42dc 100644 --- a/kernel/proc/proc.c +++ b/kernel/proc/proc.c @@ -216,7 +216,6 @@ proc_t *proc_create(const char *name) proc->p_pproc = proc_initproc; list_insert_tail(&curproc->p_children, &proc->p_child_link); list_insert_tail(&proc_list, &proc->p_list_link); - dbg(DBG_PROC, "SUCESSFULLY created PROCESS name=%s & pid =%d\n", name, proc_pid); return proc; @@ -268,11 +267,11 @@ void proc_cleanup(long status) // update state and status curproc->p_state = PROC_DEAD; - if (curthr->kt_cancelled) { - curproc->p_status = curthr->kt_retval; - } else { + // if (curthr->kt_cancelled) { + // curproc->p_status = curthr->kt_retval; + // } else { curproc->p_status = status; - } + // } } /* @@ -337,7 +336,7 @@ void proc_kill_all() { if (p->p_pid != curproc->p_pid && p->p_pid != PID_IDLE) { - proc_kill(p, 0); + proc_kill(p, -1); } } diff --git a/kernel/proc/sched.c b/kernel/proc/sched.c index 31976bb..c8f209c 100644 --- a/kernel/proc/sched.c +++ b/kernel/proc/sched.c @@ -168,9 +168,17 @@ long sched_cancellable_sleep_on(ktqueue_t *queue) curthr->kt_state = KT_SLEEP_CANCELLABLE; + if (curthr->kt_cancelled) + { + return -EINTR; + } + sched_switch(queue); - // TODO: finish this function - consider the ipl_wait() function + if (curthr->kt_cancelled) + { + return -EINTR; + } return 0; } |