From ea1ad3c6b1bb30800820eb0cc512faf8c1804112 Mon Sep 17 00:00:00 2001 From: Aiken Harris Date: Wed, 17 Jun 2026 16:13:02 +0200 Subject: [PATCH] Implement deferred ready thread insertion --- xtoskrnl/CMakeLists.txt | 1 + xtoskrnl/includes/ke.hh | 1 + xtoskrnl/includes/ke/schedule.hh | 25 +++++++++++++++++++++ xtoskrnl/ke/schedule.cc | 37 ++++++++++++++++++++++++++++++++ 4 files changed, 64 insertions(+) create mode 100644 xtoskrnl/includes/ke/schedule.hh create mode 100644 xtoskrnl/ke/schedule.cc diff --git a/xtoskrnl/CMakeLists.txt b/xtoskrnl/CMakeLists.txt index b1b2080..8e3306c 100644 --- a/xtoskrnl/CMakeLists.txt +++ b/xtoskrnl/CMakeLists.txt @@ -55,6 +55,7 @@ list(APPEND XTOSKRNL_SOURCE ${XTOSKRNL_SOURCE_DIR}/ke/kthread.cc ${XTOSKRNL_SOURCE_DIR}/ke/kubsan.cc ${XTOSKRNL_SOURCE_DIR}/ke/runlevel.cc + ${XTOSKRNL_SOURCE_DIR}/ke/schedule.cc ${XTOSKRNL_SOURCE_DIR}/ke/semphore.cc ${XTOSKRNL_SOURCE_DIR}/ke/shdata.cc ${XTOSKRNL_SOURCE_DIR}/ke/spinlock.cc diff --git a/xtoskrnl/includes/ke.hh b/xtoskrnl/includes/ke.hh index 917817c..0051258 100644 --- a/xtoskrnl/includes/ke.hh +++ b/xtoskrnl/includes/ke.hh @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include diff --git a/xtoskrnl/includes/ke/schedule.hh b/xtoskrnl/includes/ke/schedule.hh new file mode 100644 index 0000000..de05c1e --- /dev/null +++ b/xtoskrnl/includes/ke/schedule.hh @@ -0,0 +1,25 @@ +/** + * PROJECT: ExectOS + * COPYRIGHT: See COPYING.md in the top level directory + * FILE: xtoskrnl/includes/ke/schedule.hh + * DESCRIPTION: XT Kernel Thread Scheduler + * DEVELOPERS: Aiken Harris + */ + +#ifndef __XTOSKRNL_KE_SCHEDULE_HH +#define __XTOSKRNL_KE_SCHEDULE_HH + +#include + + +/* Kernel Library */ +namespace KE +{ + class Scheduler + { + public: + STATIC XTFASTCALL VOID InsertDeferredReadyList(IN PKTHREAD Thread); + }; +} + +#endif /* __XTOSKRNL_KE_SCHEDULE_HH */ diff --git a/xtoskrnl/ke/schedule.cc b/xtoskrnl/ke/schedule.cc new file mode 100644 index 0000000..64deb6b --- /dev/null +++ b/xtoskrnl/ke/schedule.cc @@ -0,0 +1,37 @@ +/** + * PROJECT: ExectOS + * COPYRIGHT: See COPYING.md in the top level directory + * FILE: xtoskrnl/ke/schedule.cc + * DESCRIPTION: XT Kernel Thread Scheduler + * DEVELOPERS: Aiken Harris + */ + +#include + + +/** + * Inserts a thread into the current processor's deferred ready list. + * + * @param Thread + * Supplies a pointer to the thread being deferred. + * + * @return This routine does not return any value. + * + * @since XT 1.0 + */ +XTFASTCALL +VOID +KE::Scheduler::InsertDeferredReadyList(IN PKTHREAD Thread) +{ + PKPROCESSOR_CONTROL_BLOCK Prcb; + + /* Retrieve the Processor Control Block (PRCB) for the executing core */ + Prcb = KE::Processor::GetCurrentProcessorControlBlock(); + + /* Tag the thread with the current CPU and update its scheduling state */ + Thread->DeferredProcessor = Prcb->CpuNumber; + Thread->State = DeferredReady; + + /* Insert the thread into the deferred ready list */ + RTL::LifoQueue::PushEntryList(&Prcb->DeferredReadyListHead, &Thread->SwapListEntry); +}