Add dispatcher object routing for wait satisfaction and interval calculation
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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,
|
||||
|
||||
29
xtoskrnl/includes/ke/dispobj.hh
Normal file
29
xtoskrnl/includes/ke/dispobj.hh
Normal 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 */
|
||||
Reference in New Issue
Block a user