Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

328 lines
6.8 KiB

title "Global SpinLock declerations"
;++
;
;Copyright (c) 2000 Microsoft Corporation
;
; Module Name:
;
; hifreqlk.asm
;
; Abstract:
;
; High frequency system spin locks are declared in this module. Each spin
; lock is placed in its own cache line on MP systems.
;
; Author:
;
; David N. Cutler (davec) 22-Jun-2000
;
;Revision History:
;
;--
include ksamd64.inc
ifdef NT_UP
ALIGN_VALUE equ 16
else
ALIGN_VALUE equ 128
endif
;
; Define spin lock generation macro.
;
SPINLOCK macro SpinLockName
align ALIGN_VALUE
public SpinLockName
SpinLockName dq 0
endm
;
; Define variable generation macro.
;
ULONG64 macro VariableName
align ALIGN_VALUE
public VariableName
VariableName dq 0
endm
_DATA$00 SEGMENT PAGE 'DATA'
;
; The Initial PCR must be the first allocation in the section so it will be
; page aligned.
;
public KiInitialPCR
KiInitialPCR db ProcessorControlRegisterLength dup (0)
;
; Static SpinLocks from ntos\cc
;
SPINLOCK CcMasterSpinLock
SPINLOCK CcWorkQueueSpinLock
SPINLOCK CcVacbSpinLock
SPINLOCK CcDeferredWriteSpinLock
SPINLOCK CcDebugTraceLock
SPINLOCK CcBcbSpinLock
;
; Static SpinLocks from ntos\ex
;
SPINLOCK NonPagedPoolLock
SPINLOCK ExpResourceSpinLock
;
; Static SpinLocks from ntos\io
;
SPINLOCK IopCompletionLock
SPINLOCK IopCancelSpinLock
SPINLOCK IopVpbSpinLock
SPINLOCK IopDatabaseLock
SPINLOCK IopErrorLogLock
SPINLOCK IopTimerLock
SPINLOCK IoStatisticsLock
;
; Static SpinLocks from ntos\kd
;
SPINLOCK KdpDebuggerLock
;
; Static SpinLocks from ntos\ke
;
SPINLOCK KiDispatcherLock
SPINLOCK KiFreezeExecutionLock
SPINLOCK KiFreezeLockBackup
SPINLOCK KiNMILock
SPINLOCK KiProfileLock
ULONG64 KiHardwareTrigger
;
; Static SpinLocks from ntos\mm
;
SPINLOCK MmPfnLock
SPINLOCK MmSystemSpaceLock
SPINLOCK MmNonPagedPoolLock
;
; Static SpinLocks from ntos\ps
;
SPINLOCK PspEventPairLock
SPINLOCK PsLoadedModuleSpinLock
;
; Static SpinLocks from ntos\fsrtl
;
SPINLOCK FsRtlStrucSupSpinLock
;
; Static SpinLocks from base\fs\ntfs
;
SPINLOCK NtfsStructLock
;
; Static SpinLocks from net\sockets\winsock2\wsp
;
SPINLOCK AfdWorkQueueSpinLock
;
; These variables are referenced together and are defined in a single cache
; line to reduce sharing on MP systems.
;
; KiIdleSummary - This is the set of processors which are idle. It is
; used by the ready thread code to speed up the search for a thread
; to preempt when a thread becomes runnable.
;
align ALIGN_VALUE
public KiIdleSummary
KiIdleSummary dq 0
;
; PoSleepingSummary - Set of processors which currently sleep (ie stop)
; when idle.
;
public PoSleepingSummary
PoSleepingSummary dq 0
;
; KiTbFlushTimeStamp - This is the TB flush entire time stamp counter.
;
; This variable is in it own cache line to reduce false sharing on MP systems.
;
align ALIGN_VALUE
public KiTbFlushTimeStamp
KiTbFlushTimeStamp dd 0
;
; These variables are referenced together and are defined in a single cache
; line to reduce sharing on MP systems.
;
; KiTimeIncrementReciprocal - This is the reciprocal fraction of the time
; increment value that is specified by the HAL when the system is
; booted.
;
align ALIGN_VALUE
public KiTimeIncrementReciprocal
KiTimeIncrementReciprocal dq 0
;
; KiTimeIncrementShiftCount - This is the shift count that corresponds to
; the time increment reciprocal value.
;
public KiTimeIncrementShiftCount
KiTimeIncrementShiftCount dd 0
;
; KeMaximumIncrement - This is the maximum time between clock interrupts
; in 100ns units that is supported by the host HAL.
;
public KeMaximumIncrement
KeMaximumIncrement dd 0
;
; KeTimeAdjustment - This is the actual number of 100ns units that are to
; be added to the system time at each interval timer interupt. This
; value is copied from KeTimeIncrement at system start up and can be
; later modified via the set system information service.
; timer table entries.
;
public KeTimeAdjustment
KeTimeAdjustment dd 0
;
; KiTickOffset - This is the number of 100ns units remaining before a tick
; is added to the tick count and the system time is updated.
;
public KiTickOffset
KiTickOffset dd 0
;
; These variables are referenced together and are defined in a single cache
; line to reduce sharing on MP systems.
;
; KiMaximumDpcQueueDepth - This is used to control how many DPCs can be
; queued before a DPC of medium importance will trigger a dispatch
; interrupt.
;
align ALIGN_VALUE
public KiMaximumDpcQueueDepth
KiMaximumDpcQueueDepth dd 4
;
; KiMinimumDpcRate - This is the rate of DPC requests per clock tick that
; must be exceeded before DPC batching of medium importance DPCs
; will occur.
;
public KiMinimumDpcRate
KiMinimumDpcRate dd 3
;
; KiAdjustDpcThreshold - This is the threshold used by the clock interrupt
; routine to control the rate at which the processor's DPC queue depth
; is dynamically adjusted.
;
public KiAdjustDpcThreshold
KiAdjustDpcThreshold dd 20
;
; KiIdealDpcRate - This is used to control the aggressiveness of the DPC
; rate adjusting algorithm when decrementing the queue depth. As long
; as the DPC rate for the last tick is greater than this rate, the
; DPC queue depth will not be decremented.
;
public KiIdealDpcRate
KiIdealDpcRate dd 20
;
; MmPaeMask - This is the value used to mask upper bits of a PAE PTE.
;
; This variable is in it own cache line to reduce false sharing on MP systems.
;
align ALIGN_VALUE
public MmPaeMask
MmPaeMask dq 0
public MmPaeErrMask
MmPaeErrMask dd 0
;
; MmPfnDereferenceSListHead - This is used to store free blocks used for
; deferred PFN reference count releasing.
;
; This variable is in it own cache line to reduce false sharing on MP systems.
;
align ALIGN_VALUE
public MmPfnDereferenceSListHead
MmPfnDereferenceSListHead dq 2 dup (0)
;
; MmPfnDeferredList - This is used to queue items that need reference count
; decrement processing.
;
; This variable is in it own cache line to reduce false sharing on MP systems.
;
align ALIGN_VALUE
public MmPfnDeferredList
MmPfnDeferredList dq 0
;
; MmSystemLockPagesCount - This is the count of the number of locked pages
; in the system.
;
align ALIGN_VALUE
public MmSystemLockPagesCount
MmSystemLockPagesCount dq 0
align ALIGN_VALUE
_DATA$00 ends
end