diff --git a/src/include/kernel/sched.h b/src/include/kernel/sched.h index 94c051a1..c5880c77 100644 --- a/src/include/kernel/sched.h +++ b/src/include/kernel/sched.h @@ -17,6 +17,7 @@ #define THREAD_STATE_RUNNING 1 #define THREAD_STATE_BLOCKED 2 #define THREAD_STATE_BLOCKED_INTR 3 +#define THREAD_STATE_DEAD 4 #define PROC_STATE_NORMAL 0 #define PROC_STATE_ZOMBIE 1 diff --git a/src/sys/sched/scheduler.c b/src/sys/sched/scheduler.c index 6df1d1d5..c1cc299b 100644 --- a/src/sys/sched/scheduler.c +++ b/src/sys/sched/scheduler.c @@ -373,6 +373,13 @@ void sched_dequeue(){ } +__attribute__((noreturn)) int sched_die(){ + + arch_getcls()->thread->state = THREAD_STATE_DEAD; + + sched_dequeue(); +} + void sched_block(bool interruptible){ thread_t* thread = arch_getcls()->thread;