From d2c89f01e62e992d6ef718fd6c8b8094bc486f96 Mon Sep 17 00:00:00 2001 From: Matheus Date: Sun, 20 Nov 2022 20:13:07 -0300 Subject: [PATCH] scheduler: sched_die() and new thread state --- src/include/kernel/sched.h | 1 + src/sys/sched/scheduler.c | 7 +++++++ 2 files changed, 8 insertions(+) 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;