Extend CONTEXT and PRCB structures with context flags and IPI state fields
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user