Add dispatcher object routing for wait satisfaction and interval calculation
Some checks failed
Builds / ExectOS (i686, debug) (push) Failing after 30s
Builds / ExectOS (amd64, debug) (push) Failing after 32s
Builds / ExectOS (amd64, release) (push) Failing after 32s
Builds / ExectOS (i686, release) (push) Failing after 29s

This commit is contained in:
2026-06-28 23:25:45 +02:00
parent 3011df6f3c
commit 119480382b
7 changed files with 331 additions and 1 deletions

View File

@@ -16,6 +16,7 @@
#include <ke/bootinfo.hh>
#include <ke/crash.hh>
#include <ke/dispatch.hh>
#include <ke/dispobj.hh>
#include <ke/dpc.hh>
#include <ke/event.hh>
#include <ke/guard.hh>

View File

@@ -23,10 +23,20 @@ namespace KE
STATIC XTCDECL VOID HandleDispatchInterrupt(IN PKTRAP_FRAME TrapFrame);
STATIC XTFASTCALL BOOLEAN SwitchContext(IN PKTHREAD CurrentThread,
IN KRUNLEVEL RunLevel);
STATIC XTAPI XTSTATUS WaitForSingleObject(IN PVOID Object,
IN KWAIT_REASON WaitReason,
IN KPROCESSOR_MODE WaitMode,
IN BOOLEAN Alertable,
IN PLARGE_INTEGER Timeout);
STATIC XTAPI VOID UpdateRunTime(IN PKTRAP_FRAME TrapFrame,
IN KRUNLEVEL RunLevel);
private:
STATIC XTFASTCALL PLARGE_INTEGER ComputeWaitInterval(IN PLARGE_INTEGER OriginalDueTime,
IN PLARGE_INTEGER PreviousDueTime,
IN OUT PLARGE_INTEGER NewDueTime);
STATIC XTFASTCALL XTSTATUS SatisfyWaitingObject(IN PDISPATCHER_HEADER Object,
IN PKTHREAD Thread);
STATIC XTFASTCALL BOOLEAN SwitchThreadContext(IN PKTHREAD CurrentThread,
IN BOOLEAN ApcBypass);
STATIC XTFASTCALL BOOLEAN SwitchThreadStack(IN PKTHREAD CurrentThread,

View File

@@ -0,0 +1,29 @@
/**
* PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtoskrnl/includes/ke/dispobj.hh
* DESCRIPTION: Kernel Thread Dispatcher Objects
* DEVELOPERS: Aiken Harris <harraiken91@gmail.com>
*/
#ifndef __XTOSKRNL_KE_DISPOBJ_HH
#define __XTOSKRNL_KE_DISPOBJ_HH
#include <xtos.hh>
/* Kernel Library */
namespace KE
{
class DispatcherObject
{
public:
STATIC XTFASTCALL VOID SatisfyWaitingMutexObject(IN PKMUTEX MutexObject,
IN PKTHREAD Thread);
STATIC XTFASTCALL VOID SatisfyWaitingNonMutexObject(IN PDISPATCHER_HEADER MutexObject);
STATIC XTFASTCALL VOID SatisfyWaitingObject(IN PDISPATCHER_HEADER MutexObject,
IN PKTHREAD Thread);
};
}
#endif /* __XTOSKRNL_KE_DISPOBJ_HH */