aboutsummaryrefslogtreecommitdiff
path: root/kernel/proc
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/proc')
-rw-r--r--kernel/proc/proc.c11
-rw-r--r--kernel/proc/sched.c10
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;
}