diff options
author | sotech117 <michael_foiani@brown.edu> | 2024-03-02 23:05:26 +0000 |
---|---|---|
committer | sotech117 <michael_foiani@brown.edu> | 2024-03-02 23:05:26 +0000 |
commit | 8c2e0ce946012a4275e8dfa9d8dfd1d5a68d6e3e (patch) | |
tree | 1877a33c6488a5b16fb7962e1ffb0f72f13a5052 /kernel/proc | |
parent | 9c90e73fda0d5df2e1f11b32d459d3bb07a63192 (diff) |
decent coding session
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; } |