Initial implementation of the thread initialization

This commit is contained in:
2023-02-23 20:11:21 +01:00
parent 9c083dc050
commit c4d1f1cd0d
13 changed files with 356 additions and 13 deletions

View File

@@ -16,6 +16,11 @@
#include ARCH_HEADER(ketypes.h)
/* Exception types and handling mechanisms */
#define EXCEPTION_CONTINUE_SEARCH 0x00
#define EXCEPTION_EXECUTE_HANDLER 0x01
#define EXCEPTION_CONTINUE_EXECUTION 0xFF
/* Maximum number of exception parameters */
#define EXCEPTION_MAXIMUM_PARAMETERS 15
@@ -34,6 +39,14 @@
#define KTIMER_WAIT_BLOCK 3
#define SEMAPHORE_WAIT_BLOCK 2
/* Adjust reason */
typedef enum _ADJUST_REASON
{
AdjustNone = 0,
AdjustUnwait = 1,
AdjustBoost = 2
} ADJUST_REASON, *PADJUST_REASON;
/* Exception disposition return values */
typedef enum _EXCEPTION_DISPOSITION
{
@@ -83,6 +96,19 @@ typedef enum _KOBJECTS
MaximumKernelObject = 25
} KOBJECTS, *PKOBJECTS;
/* Thread state */
typedef enum _KTHREAD_STATE
{
Initialized,
Ready,
Running,
Standby,
Terminated,
Waiting,
Transition,
DeferredReady
} KTHREAD_STATE, *PKTHREAD_STATE;
/* Timer type */
typedef enum _KTIMER_TYPE
{
@@ -98,6 +124,13 @@ typedef enum _MODE
MaximumMode
} MODE, *PMODE;
/* Wait type */
typedef enum _WAIT_TYPE
{
WaitAll,
WaitAny
} WAIT_TYPE, *PWAIT_TYPE;
/* Kernel routine callbacks */
typedef EXCEPTION_DISPOSITION (*PEXCEPTION_ROUTINE)(IN PEXCEPTION_RECORD ExceptionRecord, IN PVOID EstablisherFrame, IN OUT PCONTEXT ContextRecord, IN OUT PVOID DispatcherContext);
typedef VOID (*PKNORMAL_ROUTINE)(IN PVOID NormalContext, IN PVOID SystemArgument1, IN PVOID SystemArgument2);

View File

@@ -48,10 +48,12 @@
/* XT status code definitions */
#define STATUS_SUCCESS ((XTSTATUS) 0x00000000L)
#define STATUS_UNSUCCESSFUL ((XTSTATUS) 0xC0000001L)
#define STATUS_NOT_IMPLEMENTED ((XTSTATUS) 0xC0000002L)
#define STATUS_INVALID_PARAMETER ((XTSTATUS) 0xC000000DL)
#define STATUS_INSUFFICIENT_RESOURCES ((XTSTATUS) 0xC000009AL)
#define STATUS_DEVICE_NOT_READY ((XTSTATUS) 0xC00000A3L)
#define STATUS_TIMEOUT ((XTSTATUS) 0x00000102L)
#define STATUS_IO_DEVICE_ERROR ((XTSTATUS) 0xC0000185L)
#define STATUS_NOT_FOUND ((XTSTATUS) 0xC0000225L)

View File

@@ -13,6 +13,7 @@
/* Enumeration lists forward references */
typedef enum _ADJUST_REASON ADJUST_REASON, *PADJUST_REASON;
typedef enum _BOOLEAN BOOLEAN, *PBOOLEAN;
typedef enum _EXCEPTION_DISPOSITION EXCEPTION_DISPOSITION, *PEXCEPTION_DISPOSITION;
typedef enum _EFI_ALLOCATE_TYPE EFI_ALLOCATE_TYPE, *PEFI_ALLOCATE_TYPE;
@@ -39,10 +40,12 @@ typedef enum _EFI_UART_STOP_BITS_TYPE EFI_UART_STOP_BITS_TYPE, *PEFI_UART_STOP_B
typedef enum _EFI_UNIVERSA_GRAPHICS_BLT_OPERATION EFI_UNIVERSA_GRAPHICS_BLT_OPERATION, *PEFI_UNIVERSA_GRAPHICS_BLT_OPERATION;
typedef enum _KAPC_ENVIRONMENT KAPC_ENVIRONMENT, *PKAPC_ENVIRONMENT;
typedef enum _KOBJECTS KOBJECTS, *PKOBJECTS;
typedef enum _KTHREAD_STATE KTHREAD_STATE, *PKTHREAD_STATE;
typedef enum _KTIMER_TYPE KTIMER_TYPE, *PKTIMER_TYPE;
typedef enum _LOADER_MEMORY_TYPE LOADER_MEMORY_TYPE, *PLOADER_MEMORY_TYPE;
typedef enum _MODE MODE, *PMODE;
typedef enum _SYSTEM_FIRMWARE_TYPE SYSTEM_FIRMWARE_TYPE, *PSYSTEM_FIRMWARE_TYPE;
typedef enum _WAIT_TYPE WAIT_TYPE, *PWAIT_TYPE;
/* Structures forward references */
typedef struct _ANSI_STRING ANSI_STRING, *PANSI_STRING;