Migrate KE subsystem to C++
This commit is contained in:
31
xtoskrnl/includes/ke.hh
Normal file
31
xtoskrnl/includes/ke.hh
Normal file
@@ -0,0 +1,31 @@
|
||||
/**
|
||||
* PROJECT: ExectOS
|
||||
* COPYRIGHT: See COPYING.md in the top level directory
|
||||
* FILE: xtoskrnl/includes/ke.hh
|
||||
* DESCRIPTION: Kernel Library
|
||||
* DEVELOPERS: Aiken Harris <harraiken91@gmail.com>
|
||||
*/
|
||||
|
||||
#ifndef __XTOSKRNL_KE_HH
|
||||
#define __XTOSKRNL_KE_HH
|
||||
|
||||
#include <xtos.hh>
|
||||
|
||||
#include <ke/apc.hh>
|
||||
#include <ke/bootinfo.hh>
|
||||
#include <ke/crash.hh>
|
||||
#include <ke/dpc.hh>
|
||||
#include <ke/event.hh>
|
||||
#include <ke/irq.hh>
|
||||
#include <ke/kprocess.hh>
|
||||
#include <ke/krnlinit.hh>
|
||||
#include <ke/kthread.hh>
|
||||
#include <ke/kubsan.hh>
|
||||
#include <ke/proc.hh>
|
||||
#include <ke/runlevel.hh>
|
||||
#include <ke/semphore.hh>
|
||||
#include <ke/spinlock.hh>
|
||||
#include <ke/sysres.hh>
|
||||
#include <ke/timer.hh>
|
||||
|
||||
#endif /* __XTOSKRNL_KE_HH */
|
32
xtoskrnl/includes/ke/apc.hh
Normal file
32
xtoskrnl/includes/ke/apc.hh
Normal file
@@ -0,0 +1,32 @@
|
||||
/**
|
||||
* PROJECT: ExectOS
|
||||
* COPYRIGHT: See COPYING.md in the top level directory
|
||||
* FILE: xtoskrnl/includes/ke/apc.hh
|
||||
* DESCRIPTION: Kernel APC objects support
|
||||
* DEVELOPERS: Aiken Harris <harraiken91@gmail.com>
|
||||
*/
|
||||
|
||||
#ifndef __XTOSKRNL_KE_APC_HH
|
||||
#define __XTOSKRNL_KE_APC_HH
|
||||
|
||||
#include <xtos.hh>
|
||||
|
||||
|
||||
/* Kernel Library */
|
||||
namespace KE
|
||||
{
|
||||
class Apc
|
||||
{
|
||||
public:
|
||||
STATIC XTAPI VOID InitializeApc(IN PKAPC Apc,
|
||||
IN PKTHREAD Thread,
|
||||
IN KAPC_ENVIRONMENT Environment,
|
||||
IN PKKERNEL_ROUTINE KernelRoutine,
|
||||
IN PKRUNDOWN_ROUTINE RundownRoutine,
|
||||
IN PKNORMAL_ROUTINE NormalRoutine,
|
||||
IN KPROCESSOR_MODE ApcMode,
|
||||
IN PVOID Context);
|
||||
};
|
||||
}
|
||||
|
||||
#endif /* __XTOSKRNL_KE_APC_HH */
|
38
xtoskrnl/includes/ke/bootinfo.hh
Normal file
38
xtoskrnl/includes/ke/bootinfo.hh
Normal file
@@ -0,0 +1,38 @@
|
||||
/**
|
||||
* PROJECT: ExectOS
|
||||
* COPYRIGHT: See COPYING.md in the top level directory
|
||||
* FILE: xtoskrnl/includes/ke/bootinfo.hh
|
||||
* DESCRIPTION: Bootloader-provided system information handling support
|
||||
* DEVELOPERS: Aiken Harris <harraiken91@gmail.com>
|
||||
*/
|
||||
|
||||
#ifndef __XTOSKRNL_KE_BOOTINFO_HH
|
||||
#define __XTOSKRNL_KE_BOOTINFO_HH
|
||||
|
||||
#include <xtos.hh>
|
||||
|
||||
|
||||
/* Kernel Library */
|
||||
namespace KE
|
||||
{
|
||||
class BootInformation
|
||||
{
|
||||
private:
|
||||
STATIC PKERNEL_INITIALIZATION_BLOCK InitializationBlock;
|
||||
|
||||
public:
|
||||
STATIC XTAPI PVOID GetDebugPrint(VOID);
|
||||
STATIC XTAPI SYSTEM_FIRMWARE_TYPE GetFirmwareType(VOID);
|
||||
STATIC XTAPI XTSTATUS GetKernelParameter(IN PCWSTR ParameterName,
|
||||
OUT PCWSTR *Parameter);
|
||||
STATIC XTAPI PLIST_ENTRY GetSystemResources(VOID);
|
||||
STATIC XTAPI VOID SetInitializationBlock(IN PKERNEL_INITIALIZATION_BLOCK Block);
|
||||
|
||||
STATIC XTAPI PKERNEL_INITIALIZATION_BLOCK GetInitializationBlock(VOID)
|
||||
{
|
||||
return InitializationBlock;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
#endif /* __XTOSKRNL_KE_BOOTINFO_HH */
|
31
xtoskrnl/includes/ke/crash.hh
Normal file
31
xtoskrnl/includes/ke/crash.hh
Normal file
@@ -0,0 +1,31 @@
|
||||
/**
|
||||
* PROJECT: ExectOS
|
||||
* COPYRIGHT: See COPYING.md in the top level directory
|
||||
* FILE: xtoskrnl/includes/ke/crash.hh
|
||||
* DESCRIPTION: System shutdown and kernel panic mechanism
|
||||
* DEVELOPERS: Aiken Harris <harraiken91@gmail.com>
|
||||
*/
|
||||
|
||||
#ifndef __XTOSKRNL_KE_CRASH_HH
|
||||
#define __XTOSKRNL_KE_CRASH_HH
|
||||
|
||||
#include <xtos.hh>
|
||||
|
||||
|
||||
/* Kernel Library */
|
||||
namespace KE
|
||||
{
|
||||
class Crash
|
||||
{
|
||||
public:
|
||||
STATIC XTAPI VOID HaltSystem(VOID);
|
||||
STATIC XTAPI VOID Panic(IN ULONG Code);
|
||||
STATIC XTAPI VOID PanicEx(IN ULONG Code,
|
||||
IN ULONG_PTR Parameter1,
|
||||
IN ULONG_PTR Parameter2,
|
||||
IN ULONG_PTR Parameter3,
|
||||
IN ULONG_PTR Parameter4);
|
||||
};
|
||||
}
|
||||
|
||||
#endif /* __XTOSKRNL_KE_CRASH_HH */
|
37
xtoskrnl/includes/ke/dpc.hh
Normal file
37
xtoskrnl/includes/ke/dpc.hh
Normal file
@@ -0,0 +1,37 @@
|
||||
/**
|
||||
* PROJECT: ExectOS
|
||||
* COPYRIGHT: See COPYING.md in the top level directory
|
||||
* FILE: xtoskrnl/includes/ke/dpc.hh
|
||||
* DESCRIPTION: Deferred Procedure Call (DPC) support
|
||||
* DEVELOPERS: Aiken Harris <harraiken91@gmail.com>
|
||||
*/
|
||||
|
||||
#ifndef __XTOSKRNL_KE_DPC_HH
|
||||
#define __XTOSKRNL_KE_DPC_HH
|
||||
|
||||
#include <xtos.hh>
|
||||
|
||||
|
||||
/* Kernel Library */
|
||||
namespace KE
|
||||
{
|
||||
class Dpc
|
||||
{
|
||||
public:
|
||||
STATIC XTAPI VOID InitializeDpc(IN PKDPC Dpc,
|
||||
IN PKDEFERRED_ROUTINE DpcRoutine,
|
||||
IN PVOID DpcContext);
|
||||
STATIC XTAPI VOID InitializeThreadedDpc(IN PKDPC Dpc,
|
||||
IN PKDEFERRED_ROUTINE DpcRoutine,
|
||||
IN PVOID DpcContext);
|
||||
STATIC XTAPI VOID SetTargetProcessor(IN PKDPC Dpc,
|
||||
IN CCHAR Number);
|
||||
STATIC XTAPI VOID SignalCallDone(IN PVOID SystemArgument);
|
||||
STATIC XTAPI BOOLEAN SignalCallSynchronize(IN PVOID SystemArgument);
|
||||
|
||||
private:
|
||||
STATIC XTFASTCALL VOID RetireList(IN PKPROCESSOR_CONTROL_BLOCK Prcb);
|
||||
};
|
||||
}
|
||||
|
||||
#endif /* __XTOSKRNL_KE_DPC_HH */
|
31
xtoskrnl/includes/ke/event.hh
Normal file
31
xtoskrnl/includes/ke/event.hh
Normal file
@@ -0,0 +1,31 @@
|
||||
/**
|
||||
* PROJECT: ExectOS
|
||||
* COPYRIGHT: See COPYING.md in the top level directory
|
||||
* FILE: xtoskrnl/includes/ke/event.hh
|
||||
* DESCRIPTION: Kernel events support
|
||||
* DEVELOPERS: Aiken Harris <harraiken91@gmail.com>
|
||||
*/
|
||||
|
||||
#ifndef __XTOSKRNL_KE_EVENT_HH
|
||||
#define __XTOSKRNL_KE_EVENT_HH
|
||||
|
||||
#include <xtos.hh>
|
||||
|
||||
|
||||
/* Kernel Library */
|
||||
namespace KE
|
||||
{
|
||||
class Event
|
||||
{
|
||||
public:
|
||||
STATIC XTAPI VOID ClearEvent(IN PKEVENT Event);
|
||||
STATIC XTAPI VOID InitializeEvent(OUT PKEVENT Event,
|
||||
IN KEVENT_TYPE EventType,
|
||||
IN BOOLEAN InitialState);
|
||||
STATIC XTAPI LONG SetEvent(IN PKEVENT Event,
|
||||
IN KPRIORITY Increment,
|
||||
IN BOOLEAN Wait);
|
||||
};
|
||||
}
|
||||
|
||||
#endif /* __XTOSKRNL_KE_EVENT_HH */
|
27
xtoskrnl/includes/ke/info.hh
Normal file
27
xtoskrnl/includes/ke/info.hh
Normal file
@@ -0,0 +1,27 @@
|
||||
/**
|
||||
* PROJECT: ExectOS
|
||||
* COPYRIGHT: See COPYING.md in the top level directory
|
||||
* FILE: xtoskrnl/includes/ke/info.hh
|
||||
* DESCRIPTION: Generic kernel information support
|
||||
* DEVELOPERS: Aiken Harris <harraiken91@gmail.com>
|
||||
*/
|
||||
|
||||
#ifndef __XTOSKRNL_KE_INFO_HH
|
||||
#define __XTOSKRNL_KE_INFO_HH
|
||||
|
||||
#include <xtos.hh>
|
||||
|
||||
|
||||
/* Kernel Library */
|
||||
namespace KE
|
||||
{
|
||||
class Info
|
||||
{
|
||||
public:
|
||||
STATIC XTAPI SYSTEM_FIRMWARE_TYPE GetFirmwareType(VOID);
|
||||
STATIC XTAPI XTSTATUS GetKernelParameter(IN PCWSTR ParameterName,
|
||||
OUT PCWSTR *Parameter);
|
||||
};
|
||||
}
|
||||
|
||||
#endif /* __XTOSKRNL_KE_INFO_HH */
|
26
xtoskrnl/includes/ke/irq.hh
Normal file
26
xtoskrnl/includes/ke/irq.hh
Normal file
@@ -0,0 +1,26 @@
|
||||
/**
|
||||
* PROJECT: ExectOS
|
||||
* COPYRIGHT: See COPYING.md in the top level directory
|
||||
* FILE: xtoskrnl/includes/ke/irq.hh
|
||||
* DESCRIPTION: Kernel interrupts support
|
||||
* DEVELOPERS: Aiken Harris <harraiken91@gmail.com>
|
||||
*/
|
||||
|
||||
#ifndef __XTOSKRNL_KE_IRQ_HH
|
||||
#define __XTOSKRNL_KE_IRQ_HH
|
||||
|
||||
#include <xtos.hh>
|
||||
|
||||
|
||||
/* Kernel Library */
|
||||
namespace KE
|
||||
{
|
||||
class Irq
|
||||
{
|
||||
public:
|
||||
STATIC XTAPI VOID SetInterruptHandler(IN ULONG Vector,
|
||||
IN PVOID Handler);
|
||||
};
|
||||
}
|
||||
|
||||
#endif /* __XTOSKRNL_KE_IRQ_HH */
|
33
xtoskrnl/includes/ke/kprocess.hh
Normal file
33
xtoskrnl/includes/ke/kprocess.hh
Normal file
@@ -0,0 +1,33 @@
|
||||
/**
|
||||
* PROJECT: ExectOS
|
||||
* COPYRIGHT: See COPYING.md in the top level directory
|
||||
* FILE: xtoskrnl/includes/ke/kprocess.hh
|
||||
* DESCRIPTION: XT kernel process manipulation support
|
||||
* DEVELOPERS: Aiken Harris <harraiken91@gmail.com>
|
||||
*/
|
||||
|
||||
#ifndef __XTOSKRNL_KE_KPROCESS_HH
|
||||
#define __XTOSKRNL_KE_KPROCESS_HH
|
||||
|
||||
#include <xtos.hh>
|
||||
|
||||
|
||||
/* Kernel Library */
|
||||
namespace KE
|
||||
{
|
||||
class KProcess
|
||||
{
|
||||
private:
|
||||
STATIC EPROCESS InitialProcess;
|
||||
|
||||
public:
|
||||
STATIC XTAPI PEPROCESS GetInitialProcess(VOID);
|
||||
STATIC XTAPI VOID InitializeProcess(IN OUT PKPROCESS Process,
|
||||
IN KPRIORITY Priority,
|
||||
IN KAFFINITY Affinity,
|
||||
IN PULONG_PTR DirectoryTable,
|
||||
IN BOOLEAN Alignment);
|
||||
};
|
||||
}
|
||||
|
||||
#endif /* __XTOSKRNL_KE_KPROCESS_HH */
|
30
xtoskrnl/includes/ke/krnlinit.hh
Normal file
30
xtoskrnl/includes/ke/krnlinit.hh
Normal file
@@ -0,0 +1,30 @@
|
||||
/**
|
||||
* PROJECT: ExectOS
|
||||
* COPYRIGHT: See COPYING.md in the top level directory
|
||||
* FILE: xtoskrnl/includes/ke/krnlinit.hh
|
||||
* DESCRIPTION: XTOS Kernel initialization
|
||||
* DEVELOPERS: Aiken Harris <harraiken91@gmail.com>
|
||||
*/
|
||||
|
||||
#ifndef __XTOSKRNL_KE_KRNLINIT_HH
|
||||
#define __XTOSKRNL_KE_KRNLINIT_HH
|
||||
|
||||
#include <xtos.hh>
|
||||
|
||||
|
||||
/* Kernel Library */
|
||||
namespace KE
|
||||
{
|
||||
class KernelInit
|
||||
{
|
||||
public:
|
||||
STATIC XTAPI VOID InitializeMachine(VOID);
|
||||
STATIC XTAPI VOID SwitchBootStack(VOID);
|
||||
|
||||
private:
|
||||
STATIC XTAPI VOID InitializeKernel(VOID);
|
||||
STATIC XTAPI VOID StartKernel(VOID);
|
||||
};
|
||||
}
|
||||
|
||||
#endif /* __XTOSKRNL_KE_KRNLINIT_HH */
|
55
xtoskrnl/includes/ke/kthread.hh
Normal file
55
xtoskrnl/includes/ke/kthread.hh
Normal file
@@ -0,0 +1,55 @@
|
||||
/**
|
||||
* PROJECT: ExectOS
|
||||
* COPYRIGHT: See COPYING.md in the top level directory
|
||||
* FILE: xtoskrnl/includes/ke/kthread.hh
|
||||
* DESCRIPTION: XT kernel thread manipulation support
|
||||
* DEVELOPERS: Aiken Harris <harraiken91@gmail.com>
|
||||
*/
|
||||
|
||||
#ifndef __XTOSKRNL_KE_KTHREAD_HH
|
||||
#define __XTOSKRNL_KE_KTHREAD_HH
|
||||
|
||||
#include <xtos.hh>
|
||||
|
||||
|
||||
/* Kernel Library */
|
||||
namespace KE
|
||||
{
|
||||
class KThread
|
||||
{
|
||||
private:
|
||||
STATIC ETHREAD InitialThread;
|
||||
|
||||
public:
|
||||
STATIC XTFASTCALL VOID ExitDispatcher(IN KRUNLEVEL OldRunLevel);
|
||||
STATIC XTAPI PETHREAD GetInitialThread(VOID);
|
||||
STATIC XTAPI XTSTATUS InitializeThread(IN PKPROCESS Process,
|
||||
IN OUT PKTHREAD Thread,
|
||||
IN PKSYSTEM_ROUTINE SystemRoutine,
|
||||
IN PKSTART_ROUTINE StartRoutine,
|
||||
IN PVOID StartContext,
|
||||
IN PCONTEXT Context,
|
||||
IN PVOID EnvironmentBlock,
|
||||
IN PVOID Stack,
|
||||
IN BOOLEAN StartThread);
|
||||
STATIC XTAPI VOID StartThread(IN PKTHREAD Thread);
|
||||
|
||||
private:
|
||||
STATIC XTAPI VOID InitializeThreadContext(IN PKTHREAD Thread,
|
||||
IN PKSYSTEM_ROUTINE SystemRoutine,
|
||||
IN PKSTART_ROUTINE StartRoutine,
|
||||
IN PVOID StartContext,
|
||||
IN PCONTEXT ContextRecord);
|
||||
STATIC XTAPI VOID SuspendNop(IN PKAPC Apc,
|
||||
IN OUT PKNORMAL_ROUTINE *NormalRoutine,
|
||||
IN OUT PVOID *NormalContext,
|
||||
IN OUT PVOID *SystemArgument1,
|
||||
IN OUT PVOID *SystemArgument2);
|
||||
STATIC XTAPI VOID SuspendRundown(IN PKAPC Apc);
|
||||
STATIC XTAPI VOID SuspendThread(IN PVOID NormalContext,
|
||||
IN PVOID SystemArgument1,
|
||||
IN PVOID SystemArgument2);
|
||||
};
|
||||
}
|
||||
|
||||
#endif /* __XTOSKRNL_KE_KTHREAD_HH */
|
67
xtoskrnl/includes/ke/kubsan.hh
Normal file
67
xtoskrnl/includes/ke/kubsan.hh
Normal file
@@ -0,0 +1,67 @@
|
||||
/**
|
||||
* PROJECT: ExectOS
|
||||
* COPYRIGHT: See COPYING.md in the top level directory
|
||||
* FILE: xtoskrnl/includes/ke/kubsan.hh
|
||||
* DESCRIPTION: Kernel Undefined Behaviour Sanitizer (UBSAN) error reporting handler
|
||||
* DEVELOPERS: Aiken Harris <harraiken91@gmail.com>
|
||||
*/
|
||||
|
||||
#ifndef __XTOSKRNL_KE_KUBSAN_HH
|
||||
#define __XTOSKRNL_KE_KUBSAN_HH
|
||||
|
||||
#include <xtos.hh>
|
||||
|
||||
|
||||
/* Kernel Library */
|
||||
namespace KE
|
||||
{
|
||||
class KUbsan
|
||||
{
|
||||
private:
|
||||
STATIC BOOLEAN ActiveFrame;
|
||||
|
||||
public:
|
||||
STATIC XTCDECL VOID HandleDivisionOverflow(PKUBSAN_OVERFLOW_DATA Data,
|
||||
PVOID Lhs,
|
||||
PVOID Rhs);
|
||||
STATIC XTCDECL VOID HandleFloatCastOverflow(PKUBSAN_FLOAT_CAST_OVERFLOW_DATA Data,
|
||||
ULONG_PTR Lhs,
|
||||
ULONG_PTR Rhs);
|
||||
STATIC XTCDECL VOID HandleFunctionTypeMismatch(PKUBSAN_FUNCTION_TYPE_MISMATCH_DATA Data,
|
||||
ULONG_PTR Pointer);
|
||||
STATIC XTCDECL VOID HandleIntegerOverflow(PKUBSAN_OVERFLOW_DATA Data,
|
||||
ULONG_PTR Lhs,
|
||||
ULONG_PTR Rhs);
|
||||
STATIC XTCDECL VOID HandleInvalidBuiltin(PKUBSAN_INVALID_BUILTIN_DATA Data);
|
||||
STATIC XTCDECL VOID HandleMisalignedAccess(PKUBSAN_TYPE_MISMATCH_DATA Data,
|
||||
ULONG_PTR Pointer);
|
||||
STATIC XTCDECL VOID HandleNegateOverflow(PKUBSAN_OVERFLOW_DATA Data,
|
||||
ULONG_PTR OldValue);
|
||||
STATIC XTCDECL VOID HandleNullPointerDereference(PKUBSAN_TYPE_MISMATCH_DATA Data);
|
||||
STATIC XTCDECL VOID HandleObjectSizeMismatch(PKUBSAN_TYPE_MISMATCH_DATA Data,
|
||||
ULONG_PTR Pointer);
|
||||
STATIC XTCDECL VOID HandleOutOfBounds(PKUBSAN_OUT_OF_BOUNDS_DATA Data,
|
||||
ULONG_PTR Index);
|
||||
STATIC XTCDECL VOID HandlePointerOverflow(PKUBSAN_OVERFLOW_DATA Data,
|
||||
ULONG_PTR Lhs,
|
||||
ULONG_PTR Rhs);
|
||||
STATIC XTCDECL VOID HandleShiftOutOfBounds(PKUBSAN_SHIFT_OUT_OF_BOUNDS_DATA Data,
|
||||
ULONG_PTR Lhs,
|
||||
ULONG_PTR Rhs);
|
||||
STATIC XTCDECL VOID HandleTypeMismatch(PKUBSAN_TYPE_MISMATCH_DATA Data,
|
||||
ULONG_PTR Pointer);
|
||||
|
||||
private:
|
||||
STATIC XTCDECL BOOLEAN CheckReport(PKUBSAN_SOURCE_LOCATION Location);
|
||||
STATIC XTCDECL VOID EnterFrame(PKUBSAN_SOURCE_LOCATION Location,
|
||||
PCCHAR Reason);
|
||||
STATIC XTCDECL LONGLONG GetSignedValue(PKUBSAN_TYPE_DESCRIPTOR Type,
|
||||
PVOID Value);
|
||||
STATIC XTCDECL PCCHAR GetTypeKind(UCHAR TypeCheckKind);
|
||||
STATIC XTCDECL ULONGLONG GetUnsignedValue(PKUBSAN_TYPE_DESCRIPTOR Type,
|
||||
PVOID Value);
|
||||
STATIC XTCDECL VOID LeaveFrame();
|
||||
};
|
||||
}
|
||||
|
||||
#endif /* __XTOSKRNL_KE_KUBSAN_HH */
|
29
xtoskrnl/includes/ke/proc.hh
Normal file
29
xtoskrnl/includes/ke/proc.hh
Normal file
@@ -0,0 +1,29 @@
|
||||
/**
|
||||
* PROJECT: ExectOS
|
||||
* COPYRIGHT: See COPYING.md in the top level directory
|
||||
* FILE: xtoskrnl/includes/ke/proc.hh
|
||||
* DESCRIPTION: Processor-related functionality for the kernel
|
||||
* DEVELOPERS: Aiken Harris <harraiken91@gmail.com>
|
||||
*/
|
||||
|
||||
#ifndef __XTOSKRNL_KE_PROC_HH
|
||||
#define __XTOSKRNL_KE_PROC_HH
|
||||
|
||||
#include <xtos.hh>
|
||||
|
||||
|
||||
/* Kernel Library */
|
||||
namespace KE
|
||||
{
|
||||
class Processor
|
||||
{
|
||||
public:
|
||||
STATIC XTAPI PKPROCESSOR_BLOCK GetCurrentProcessorBlock(VOID);
|
||||
STATIC XTAPI PKPROCESSOR_CONTROL_BLOCK GetCurrentProcessorControlBlock(VOID);
|
||||
STATIC XTAPI ULONG GetCurrentProcessorNumber(VOID);
|
||||
STATIC XTAPI PKTHREAD GetCurrentThread(VOID);
|
||||
STATIC XTAPI VOID SaveProcessorState(OUT PKPROCESSOR_STATE CpuState);
|
||||
};
|
||||
}
|
||||
|
||||
#endif /* __XTOSKRNL_KE_PROC_HH */
|
27
xtoskrnl/includes/ke/runlevel.hh
Normal file
27
xtoskrnl/includes/ke/runlevel.hh
Normal file
@@ -0,0 +1,27 @@
|
||||
/**
|
||||
* PROJECT: ExectOS
|
||||
* COPYRIGHT: See COPYING.md in the top level directory
|
||||
* FILE: xtoskrnl/includes/ke/runlevel.hh
|
||||
* DESCRIPTION: Running Level management support
|
||||
* DEVELOPERS: Aiken Harris <harraiken91@gmail.com>
|
||||
*/
|
||||
|
||||
#ifndef __XTOSKRNL_KE_RUNLEVEL_HH
|
||||
#define __XTOSKRNL_KE_RUNLEVEL_HH
|
||||
|
||||
#include <xtos.hh>
|
||||
|
||||
|
||||
/* Kernel Library */
|
||||
namespace KE
|
||||
{
|
||||
class RunLevel
|
||||
{
|
||||
public:
|
||||
STATIC XTFASTCALL KRUNLEVEL GetCurrentRunLevel(VOID);
|
||||
STATIC XTFASTCALL VOID LowerRunLevel(IN KRUNLEVEL RunLevel);
|
||||
STATIC XTFASTCALL KRUNLEVEL RaiseRunLevel(IN KRUNLEVEL RunLevel);
|
||||
};
|
||||
}
|
||||
|
||||
#endif /* __XTOSKRNL_KE_RUNLEVEL_HH */
|
32
xtoskrnl/includes/ke/semphore.hh
Normal file
32
xtoskrnl/includes/ke/semphore.hh
Normal file
@@ -0,0 +1,32 @@
|
||||
/**
|
||||
* PROJECT: ExectOS
|
||||
* COPYRIGHT: See COPYING.md in the top level directory
|
||||
* FILE: xtoskrnl/includes/ke/semphore.hh
|
||||
* DESCRIPTION: Semaphores support
|
||||
* DEVELOPERS: Aiken Harris <harraiken91@gmail.com>
|
||||
*/
|
||||
|
||||
#ifndef __XTOSKRNL_KE_SEMPHORE_HH
|
||||
#define __XTOSKRNL_KE_SEMPHORE_HH
|
||||
|
||||
#include <xtos.hh>
|
||||
|
||||
|
||||
/* Kernel Library */
|
||||
namespace KE
|
||||
{
|
||||
class Semaphore
|
||||
{
|
||||
public:
|
||||
STATIC XTAPI VOID InitializeSemaphore(IN PKSEMAPHORE Semaphore,
|
||||
IN LONG Count,
|
||||
IN LONG Limit);
|
||||
STATIC XTAPI LONG ReadState(IN PKSEMAPHORE Semaphore);
|
||||
STATIC XTAPI LONG ReleaseSemaphore(IN PKSEMAPHORE Semaphore,
|
||||
IN KPRIORITY Increment,
|
||||
IN LONG Adjustment,
|
||||
IN BOOLEAN Wait);
|
||||
};
|
||||
}
|
||||
|
||||
#endif /* __XTOSKRNL_KE_SEMPHORE_HH */
|
29
xtoskrnl/includes/ke/spinlock.hh
Normal file
29
xtoskrnl/includes/ke/spinlock.hh
Normal file
@@ -0,0 +1,29 @@
|
||||
/**
|
||||
* PROJECT: ExectOS
|
||||
* COPYRIGHT: See COPYING.md in the top level directory
|
||||
* FILE: xtoskrnl/includes/ke/spinlock.hh
|
||||
* DESCRIPTION: Spinlocks support
|
||||
* DEVELOPERS: Aiken Harris <harraiken91@gmail.com>
|
||||
*/
|
||||
|
||||
#ifndef __XTOSKRNL_KE_SPINLOCK_HH
|
||||
#define __XTOSKRNL_KE_SPINLOCK_HH
|
||||
|
||||
#include <xtos.hh>
|
||||
|
||||
|
||||
/* Kernel Library */
|
||||
namespace KE
|
||||
{
|
||||
class SpinLock
|
||||
{
|
||||
public:
|
||||
STATIC XTFASTCALL VOID AcquireQueuedSpinLock(IN KSPIN_LOCK_QUEUE_LEVEL LockLevel);
|
||||
STATIC XTFASTCALL VOID AcquireSpinLock(IN OUT PKSPIN_LOCK SpinLock);
|
||||
STATIC XTAPI VOID InitializeSpinLock(IN PKSPIN_LOCK SpinLock);
|
||||
STATIC XTFASTCALL VOID ReleaseQueuedSpinLock(IN KSPIN_LOCK_QUEUE_LEVEL LockLevel);
|
||||
STATIC XTFASTCALL VOID ReleaseSpinLock(IN OUT PKSPIN_LOCK SpinLock);
|
||||
};
|
||||
}
|
||||
|
||||
#endif /* __XTOSKRNL_KE_SPINLOCK_HH */
|
40
xtoskrnl/includes/ke/sysres.hh
Normal file
40
xtoskrnl/includes/ke/sysres.hh
Normal file
@@ -0,0 +1,40 @@
|
||||
/**
|
||||
* PROJECT: ExectOS
|
||||
* COPYRIGHT: See COPYING.md in the top level directory
|
||||
* FILE: xtoskrnl/includes/ke/sysres.hh
|
||||
* DESCRIPTION: System boot resources management
|
||||
* DEVELOPERS: Aiken Harris <harraiken91@gmail.com>
|
||||
*/
|
||||
|
||||
#ifndef __XTOSKRNL_KE_SYSRES_HH
|
||||
#define __XTOSKRNL_KE_SYSRES_HH
|
||||
|
||||
#include <xtos.hh>
|
||||
|
||||
|
||||
/* Kernel Library */
|
||||
namespace KE
|
||||
{
|
||||
class SystemResources
|
||||
{
|
||||
private:
|
||||
STATIC LIST_ENTRY ResourcesListHead;
|
||||
STATIC KSPIN_LOCK ResourcesLock;
|
||||
|
||||
public:
|
||||
STATIC XTAPI XTSTATUS AcquireResource(IN SYSTEM_RESOURCE_TYPE ResourceType,
|
||||
OUT PSYSTEM_RESOURCE_HEADER *ResourceHeader);
|
||||
STATIC XTAPI XTSTATUS GetResource(IN SYSTEM_RESOURCE_TYPE ResourceType,
|
||||
OUT PSYSTEM_RESOURCE_HEADER *ResourceHeader);
|
||||
STATIC XTAPI VOID InitializeResources(VOID);
|
||||
STATIC XTAPI VOID ReleaseResource(IN PSYSTEM_RESOURCE_HEADER ResourceHeader);
|
||||
|
||||
private:
|
||||
STATIC XTAPI XTSTATUS GetSystemResource(IN SYSTEM_RESOURCE_TYPE ResourceType,
|
||||
IN BOOLEAN ResourceLock,
|
||||
OUT PSYSTEM_RESOURCE_HEADER *ResourceHeader);
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
#endif /* __XTOSKRNL_KE_SYSRES_HH */
|
37
xtoskrnl/includes/ke/timer.hh
Normal file
37
xtoskrnl/includes/ke/timer.hh
Normal file
@@ -0,0 +1,37 @@
|
||||
/**
|
||||
* PROJECT: ExectOS
|
||||
* COPYRIGHT: See COPYING.md in the top level directory
|
||||
* FILE: xtoskrnl/includes/ke/timer.hh
|
||||
* DESCRIPTION: Kernel timer object support
|
||||
* DEVELOPERS: Aiken Harris <harraiken91@gmail.com>
|
||||
*/
|
||||
|
||||
#ifndef __XTOSKRNL_KE_TIMER_HH
|
||||
#define __XTOSKRNL_KE_TIMER_HH
|
||||
|
||||
#include <xtos.hh>
|
||||
|
||||
|
||||
/* Kernel Library */
|
||||
namespace KE
|
||||
{
|
||||
class Timer
|
||||
{
|
||||
public:
|
||||
STATIC XTAPI BOOLEAN CancelTimer(IN PKTIMER Timer);
|
||||
STATIC XTAPI VOID ClearTimer(IN PKTIMER Timer);
|
||||
STATIC XTAPI BOOLEAN GetState(IN PKTIMER Timer);
|
||||
STATIC XTAPI VOID InitializeTimer(OUT PKTIMER Timer,
|
||||
IN KTIMER_TYPE Type);
|
||||
STATIC XTAPI ULONGLONG QueryTimer(IN PKTIMER Timer);
|
||||
STATIC XTAPI VOID SetTimer(IN PKTIMER Timer,
|
||||
IN LARGE_INTEGER DueTime,
|
||||
IN LONG Period,
|
||||
IN PKDPC Dpc);
|
||||
|
||||
private:
|
||||
STATIC XTAPI VOID RemoveTimer(IN OUT PKTIMER Timer);
|
||||
};
|
||||
}
|
||||
|
||||
#endif /* __XTOSKRNL_KE_TIMER_HH */
|
Reference in New Issue
Block a user