Extend CONTEXT and PRCB structures with context flags and IPI state fields
All checks were successful
Builds / ExectOS (amd64, debug) (push) Successful in 33s
Builds / ExectOS (amd64, release) (push) Successful in 49s
Builds / ExectOS (i686, debug) (push) Successful in 47s
Builds / ExectOS (i686, release) (push) Successful in 31s

This commit is contained in:
2026-06-07 18:47:48 +02:00
parent 2a413d5717
commit 1df971a71e
2 changed files with 30 additions and 2 deletions

View File

@@ -17,6 +17,17 @@
#include ARCH_HEADER(artypes.h) #include ARCH_HEADER(artypes.h)
/* Processor context flags */
#define CONTEXT_ARCH 0x100000
#define CONTEXT_CONTROL (CONTEXT_ARCH | 0x1L)
#define CONTEXT_INTEGER (CONTEXT_ARCH | 0x2L)
#define CONTEXT_SEGMENTS (CONTEXT_ARCH | 0x4L)
#define CONTEXT_FLOATING_POINT (CONTEXT_ARCH | 0x8L)
#define CONTEXT_DEBUG_REGISTERS (CONTEXT_ARCH | 0x10L)
#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT)
#define CONTEXT_ALL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS | \
CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS)
/* Selector masks */ /* Selector masks */
#define MODE_MASK 0x0001 #define MODE_MASK 0x0001
#define RPL_MASK 0x0003 #define RPL_MASK 0x0003
@@ -241,7 +252,7 @@ typedef struct _CONTEXT
USHORT SegFs; USHORT SegFs;
USHORT SegGs; USHORT SegGs;
USHORT SegSs; USHORT SegSs;
ULONG EFlags; ULONG Flags;
ULONG64 Dr0; ULONG64 Dr0;
ULONG64 Dr1; ULONG64 Dr1;
ULONG64 Dr2; ULONG64 Dr2;
@@ -571,6 +582,8 @@ typedef struct _KPROCESSOR_CONTROL_BLOCK
KPROCESSOR_STATE ProcessorState; KPROCESSOR_STATE ProcessorState;
KSPIN_LOCK PrcbLock; KSPIN_LOCK PrcbLock;
KSPIN_LOCK_QUEUE LockQueue[MaximumLock]; KSPIN_LOCK_QUEUE LockQueue[MaximumLock];
VOLATILE ULONG IpiFrozen;
VOLATILE LONG_PTR RequestSummary;
KDPC_DATA DpcData[2]; KDPC_DATA DpcData[2];
PVOID DpcStack; PVOID DpcStack;
LONG MaximumDpcQueueDepth; LONG MaximumDpcQueueDepth;

View File

@@ -17,6 +17,19 @@
#include ARCH_HEADER(artypes.h) #include ARCH_HEADER(artypes.h)
/* Processor context flags */
#define CONTEXT_ARCH 0x10000
#define CONTEXT_CONTROL (CONTEXT_ARCH | 0x1L)
#define CONTEXT_INTEGER (CONTEXT_ARCH | 0x2L)
#define CONTEXT_SEGMENTS (CONTEXT_ARCH | 0x4L)
#define CONTEXT_FLOATING_POINT (CONTEXT_ARCH | 0x8L)
#define CONTEXT_DEBUG_REGISTERS (CONTEXT_ARCH | 0x10L)
#define CONTEXT_EXTENDED_REGISTERS (CONTEXT_ARCH | 0x20L)
#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS)
#define CONTEXT_ALL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS | \
CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS | \
CONTEXT_EXTENDED_REGISTERS)
/* Selector masks */ /* Selector masks */
#define MODE_MASK 0x0001 #define MODE_MASK 0x0001
#define RPL_MASK 0x0003 #define RPL_MASK 0x0003
@@ -300,7 +313,7 @@ typedef struct _CONTEXT
ULONG Ebp; ULONG Ebp;
ULONG Eip; ULONG Eip;
ULONG SegCs; ULONG SegCs;
ULONG EFlags; ULONG Flags;
ULONG Esp; ULONG Esp;
ULONG SegSs; ULONG SegSs;
UCHAR ExtendedRegisters[MAXIMUM_SUPPORTED_EXTENSION]; UCHAR ExtendedRegisters[MAXIMUM_SUPPORTED_EXTENSION];
@@ -531,6 +544,8 @@ typedef struct _KPROCESSOR_CONTROL_BLOCK
KSPIN_LOCK PrcbLock; KSPIN_LOCK PrcbLock;
KSPIN_LOCK_QUEUE LockQueue[MaximumLock]; KSPIN_LOCK_QUEUE LockQueue[MaximumLock];
ULONG_PTR MultiThreadProcessorSet; ULONG_PTR MultiThreadProcessorSet;
VOLATILE ULONG IpiFrozen;
VOLATILE LONG_PTR RequestSummary;
KDPC_DATA DpcData[2]; KDPC_DATA DpcData[2];
PVOID DpcStack; PVOID DpcStack;
LONG MaximumDpcQueueDepth; LONG MaximumDpcQueueDepth;