Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
19a9dfe7c6
|
|||
|
46594f1fc3
|
@@ -560,6 +560,7 @@ typedef struct _KPROCESSOR_CONTROL_BLOCK
|
|||||||
ULONG_PTR SetMember;
|
ULONG_PTR SetMember;
|
||||||
CPU_IDENTIFICATION CpuId;
|
CPU_IDENTIFICATION CpuId;
|
||||||
KPROCESSOR_STATE ProcessorState;
|
KPROCESSOR_STATE ProcessorState;
|
||||||
|
KSPIN_LOCK PrcbLock;
|
||||||
KSPIN_LOCK_QUEUE LockQueue[MaximumLock];
|
KSPIN_LOCK_QUEUE LockQueue[MaximumLock];
|
||||||
KDPC_DATA DpcData[2];
|
KDPC_DATA DpcData[2];
|
||||||
PVOID DpcStack;
|
PVOID DpcStack;
|
||||||
@@ -567,6 +568,11 @@ typedef struct _KPROCESSOR_CONTROL_BLOCK
|
|||||||
VOLATILE ULONG_PTR TimerRequest;
|
VOLATILE ULONG_PTR TimerRequest;
|
||||||
ULONG_PTR MultiThreadProcessorSet;
|
ULONG_PTR MultiThreadProcessorSet;
|
||||||
SINGLE_LIST_ENTRY DeferredReadyListHead;
|
SINGLE_LIST_ENTRY DeferredReadyListHead;
|
||||||
|
ULONG InterruptCount;
|
||||||
|
ULONG KernelTime;
|
||||||
|
ULONG UserTime;
|
||||||
|
ULONG DpcTime;
|
||||||
|
ULONG InterruptTime;
|
||||||
PROCESSOR_POWER_STATE PowerState;
|
PROCESSOR_POWER_STATE PowerState;
|
||||||
ULONG ProfilingCountdown;
|
ULONG ProfilingCountdown;
|
||||||
} KPROCESSOR_CONTROL_BLOCK, *PKPROCESSOR_CONTROL_BLOCK;
|
} KPROCESSOR_CONTROL_BLOCK, *PKPROCESSOR_CONTROL_BLOCK;
|
||||||
|
|||||||
@@ -519,6 +519,7 @@ typedef struct _KPROCESSOR_CONTROL_BLOCK
|
|||||||
ULONG_PTR SetMember;
|
ULONG_PTR SetMember;
|
||||||
CPU_IDENTIFICATION CpuId;
|
CPU_IDENTIFICATION CpuId;
|
||||||
KPROCESSOR_STATE ProcessorState;
|
KPROCESSOR_STATE ProcessorState;
|
||||||
|
KSPIN_LOCK PrcbLock;
|
||||||
KSPIN_LOCK_QUEUE LockQueue[MaximumLock];
|
KSPIN_LOCK_QUEUE LockQueue[MaximumLock];
|
||||||
ULONG_PTR MultiThreadProcessorSet;
|
ULONG_PTR MultiThreadProcessorSet;
|
||||||
KDPC_DATA DpcData[2];
|
KDPC_DATA DpcData[2];
|
||||||
@@ -526,6 +527,11 @@ typedef struct _KPROCESSOR_CONTROL_BLOCK
|
|||||||
VOLATILE BOOLEAN DpcRoutineActive;
|
VOLATILE BOOLEAN DpcRoutineActive;
|
||||||
VOLATILE ULONG_PTR TimerRequest;
|
VOLATILE ULONG_PTR TimerRequest;
|
||||||
SINGLE_LIST_ENTRY DeferredReadyListHead;
|
SINGLE_LIST_ENTRY DeferredReadyListHead;
|
||||||
|
ULONG InterruptCount;
|
||||||
|
ULONG KernelTime;
|
||||||
|
ULONG UserTime;
|
||||||
|
ULONG DpcTime;
|
||||||
|
ULONG InterruptTime;
|
||||||
PROCESSOR_POWER_STATE PowerState;
|
PROCESSOR_POWER_STATE PowerState;
|
||||||
ULONG ProfilingCountdown;
|
ULONG ProfilingCountdown;
|
||||||
} KPROCESSOR_CONTROL_BLOCK, *PKPROCESSOR_CONTROL_BLOCK;
|
} KPROCESSOR_CONTROL_BLOCK, *PKPROCESSOR_CONTROL_BLOCK;
|
||||||
|
|||||||
@@ -212,6 +212,55 @@ typedef enum _KTIMER_TYPE
|
|||||||
SynchronizationTimer
|
SynchronizationTimer
|
||||||
} KTIMER_TYPE, *PKTIMER_TYPE;
|
} KTIMER_TYPE, *PKTIMER_TYPE;
|
||||||
|
|
||||||
|
/* Wait reason */
|
||||||
|
typedef enum _KWAIT_REASON
|
||||||
|
{
|
||||||
|
Executive,
|
||||||
|
FreePage,
|
||||||
|
PageIn,
|
||||||
|
PoolAllocation,
|
||||||
|
DelayExecution,
|
||||||
|
Suspended,
|
||||||
|
UserRequest,
|
||||||
|
WrExecutive,
|
||||||
|
WrFreePage,
|
||||||
|
WrPageIn,
|
||||||
|
WrPoolAllocation,
|
||||||
|
WrDelayExecution,
|
||||||
|
WrSuspended,
|
||||||
|
WrUserRequest,
|
||||||
|
WrEventPair,
|
||||||
|
WrQueue,
|
||||||
|
WrLpcReceive,
|
||||||
|
WrLpcReply,
|
||||||
|
WrVirtualMemory,
|
||||||
|
WrPageOut,
|
||||||
|
WrRendezvous,
|
||||||
|
WrKeyedEvent,
|
||||||
|
WrTerminated,
|
||||||
|
WrProcessInSwap,
|
||||||
|
WrCpuRateControl,
|
||||||
|
WrCalloutStack,
|
||||||
|
WrKernel,
|
||||||
|
WrResource,
|
||||||
|
WrPushLock,
|
||||||
|
WrMutex,
|
||||||
|
WrQuantumEnd,
|
||||||
|
WrDispatchInt,
|
||||||
|
WrPreempted,
|
||||||
|
WrYieldExecution,
|
||||||
|
WrFastMutex,
|
||||||
|
WrGuardedMutex,
|
||||||
|
WrRundown,
|
||||||
|
WrAlertByThreadId,
|
||||||
|
WrDeferredPreempt,
|
||||||
|
WrPhysicalFault,
|
||||||
|
WrIoRing,
|
||||||
|
WrMdlCache,
|
||||||
|
WrRcu,
|
||||||
|
MaximumWaitReason
|
||||||
|
} KWAIT_REASON, *PKWAIT_REASON;
|
||||||
|
|
||||||
/* APC Types */
|
/* APC Types */
|
||||||
typedef enum _MODE
|
typedef enum _MODE
|
||||||
{
|
{
|
||||||
@@ -507,7 +556,7 @@ typedef struct _KTHREAD
|
|||||||
PKWAIT_BLOCK WaitBlockList;
|
PKWAIT_BLOCK WaitBlockList;
|
||||||
BOOLEAN Alertable;
|
BOOLEAN Alertable;
|
||||||
BOOLEAN WaitNext;
|
BOOLEAN WaitNext;
|
||||||
UCHAR WaitReason;
|
KWAIT_REASON WaitReason;
|
||||||
SCHAR Priority;
|
SCHAR Priority;
|
||||||
UCHAR StackSwap;
|
UCHAR StackSwap;
|
||||||
VOLATILE UCHAR SwapBusy;
|
VOLATILE UCHAR SwapBusy;
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ typedef enum _KPROFILE_SOURCE KPROFILE_SOURCE, *PKPROFILE_SOURCE;
|
|||||||
typedef enum _KTHREAD_STATE KTHREAD_STATE, *PKTHREAD_STATE;
|
typedef enum _KTHREAD_STATE KTHREAD_STATE, *PKTHREAD_STATE;
|
||||||
typedef enum _KTIMER_TYPE KTIMER_TYPE, *PKTIMER_TYPE;
|
typedef enum _KTIMER_TYPE KTIMER_TYPE, *PKTIMER_TYPE;
|
||||||
typedef enum _KUBSAN_DATA_TYPE KUBSAN_DATA_TYPE, *PKUBSAN_DATA_TYPE;
|
typedef enum _KUBSAN_DATA_TYPE KUBSAN_DATA_TYPE, *PKUBSAN_DATA_TYPE;
|
||||||
|
typedef enum _KWAIT_REASON KWAIT_REASON, *PKWAIT_REASON;
|
||||||
typedef enum _LOADER_MEMORY_TYPE LOADER_MEMORY_TYPE, *PLOADER_MEMORY_TYPE;
|
typedef enum _LOADER_MEMORY_TYPE LOADER_MEMORY_TYPE, *PLOADER_MEMORY_TYPE;
|
||||||
typedef enum _MMPAGELISTS MMPAGELISTS, *PMMPAGELISTS;
|
typedef enum _MMPAGELISTS MMPAGELISTS, *PMMPAGELISTS;
|
||||||
typedef enum _MMPFN_CACHE_ATTRIBUTE MMPFN_CACHE_ATTRIBUTE, *PMMPFN_CACHE_ATTRIBUTE;
|
typedef enum _MMPFN_CACHE_ATTRIBUTE MMPFN_CACHE_ATTRIBUTE, *PMMPFN_CACHE_ATTRIBUTE;
|
||||||
|
|||||||
@@ -152,6 +152,7 @@ KE::SystemTime::UpdateSystemTime(IN PKTRAP_FRAME TrapFrame,
|
|||||||
IN KRUNLEVEL RunLevel)
|
IN KRUNLEVEL RunLevel)
|
||||||
{
|
{
|
||||||
LARGE_INTEGER InterruptTime, SystemTime;
|
LARGE_INTEGER InterruptTime, SystemTime;
|
||||||
|
PKPROCESSOR_CONTROL_BLOCK ControlBlock;
|
||||||
LONG CurrentTickOffset;
|
LONG CurrentTickOffset;
|
||||||
|
|
||||||
/* Advance the global interrupt time on every hardware tick */
|
/* Advance the global interrupt time on every hardware tick */
|
||||||
@@ -179,4 +180,10 @@ KE::SystemTime::UpdateSystemTime(IN PKTRAP_FRAME TrapFrame,
|
|||||||
/* Update processor and thread runtime accounting */
|
/* Update processor and thread runtime accounting */
|
||||||
KE::Dispatcher::UpdateRunTime(TrapFrame, RunLevel);
|
KE::Dispatcher::UpdateRunTime(TrapFrame, RunLevel);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Increment the interrupt count */
|
||||||
|
ControlBlock = KE::Processor::GetCurrentProcessorControlBlock();
|
||||||
|
ControlBlock->InterruptCount++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user