Scheduler State

The first three lines and the fifth line of the output show the state of the kernel scheduler. This information is mainly of interest to kernel engineers, although the state of the kernel and the system locks can be useful when debugging device driver crashes.

SCHEDULER @64000348: CurrentThread 640396b0
RescheduleNeeded=00 DfcPending=00 KernCSLocked=00000001
DFCS: next 64000458 prev 64000458
...
SYSLOCK: HoldingThread 00000000 iWaiting 00000000

The values are interpreted as follows:

SCHEDULER @

This is the address of the kernel’s scheduler instance; this is not very useful.

CurrentThread

The address of the kernel object for the current kernel thread.

RescheduleNeeded

This is set to non-zero by the kernel to force a reschedule, for example if a thread has been signalled

DfcPending

This is non-zero when there are DFCs queued.

KernCSLocked

This is incremented each time the kernel is locked by a call to NKern::Lock(), and decremented by calls to NKern::Unlock(). A value of zero means that the kernel is not locked.

DFCS:

The addresses of the next and the previous items on the DFC queue

HoldingThread

The address of the thread holding the system lock mutex. The system lock is set by call to NKern::LockSystem() and unset by call to NKern::UnlockSystem()

iWaiting

Non-zero, if any thread is waiting for the system lock mutex.

 

Related tasks