Initial implementation of process initialization

This commit is contained in:
2023-02-24 19:52:20 +01:00
parent c4d1f1cd0d
commit 9c74aafe3d
7 changed files with 116 additions and 0 deletions

View File

@@ -39,6 +39,10 @@
#define KTIMER_WAIT_BLOCK 3
#define SEMAPHORE_WAIT_BLOCK 2
/* Quantum values */
#define READY_SKIP_QUANTUM 2
#define THREAD_QUANTUM 6
/* Adjust reason */
typedef enum _ADJUST_REASON
{
@@ -96,6 +100,17 @@ typedef enum _KOBJECTS
MaximumKernelObject = 25
} KOBJECTS, *PKOBJECTS;
/* Process states */
typedef enum _KPROCESS_STATE
{
ProcessInMemory,
ProcessOutOfMemory,
ProcessInTransition,
ProcessOutTransition,
ProcessInSwap,
ProcessOutSwap
} KPROCESS_STATE, *PKPROCESS_STATE;
/* Thread state */
typedef enum _KTHREAD_STATE
{
@@ -252,6 +267,13 @@ typedef struct _KWAIT_BLOCK
/* Process control block structure definition */
typedef struct _KPROCESS
{
DISPATCHER_HEADER Header;
LIST_ENTRY ProfileListHead;
ULONG_PTR DirectoryTable[2];
USHORT IopmOffset;
LIST_ENTRY ReadyListHead;
LIST_ENTRY ThreadListHead;
KAFFINITY Affinity;
union
{
struct
@@ -263,6 +285,10 @@ typedef struct _KPROCESS
};
LONG ProcessFlags;
};
SCHAR BasePriority;
SCHAR Quantum;
UCHAR State;
ULONG_PTR StackCount;
} KPROCESS, *PKPROCESS;
/* Thread control block structure definition */

View File

@@ -14,6 +14,9 @@
#include <xttypes.h>
/* Kernel affinity */
typedef ULONG_PTR KAFFINITY, *PKAFFINITY;
/* Interrupt Request Level (IRQL) */
typedef UCHAR KIRQL, *PKIRQL;

View File

@@ -30,6 +30,14 @@
#define NULL ((PVOID) 0)
#define NULL64 ((VOID * PVOID) 0)
/* Type limits */
#define MINCHAR 0x80
#define MAXCHAR 0x7F
#define MINSHORT 0x8000
#define MAXSHORT 0x7FFF
#define MINLONG 0x80000000
#define MAXLONG 0x7FFFFFFF
/* Preprocessor macros for defining a structure alignment and packing */
#define ALIGN(x) __attribute__((aligned(x)))
#define PACK __attribute__((packed))

View File

@@ -40,6 +40,7 @@ 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 _KPROCESS_STATE KPROCESS_STATE, *PKPROCESS_STATE;
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;