diff options
Diffstat (limited to 'private/ntos/ex/i386/splocks.asm')
-rw-r--r-- | private/ntos/ex/i386/splocks.asm | 208 |
1 files changed, 208 insertions, 0 deletions
diff --git a/private/ntos/ex/i386/splocks.asm b/private/ntos/ex/i386/splocks.asm new file mode 100644 index 000000000..154cfb26f --- /dev/null +++ b/private/ntos/ex/i386/splocks.asm @@ -0,0 +1,208 @@ + title "Global SpinLock declerations" +;++ +; +;Copyright (c) 1991 Microsoft Corporation +; +;Module Name: +; +; splocks.asm +; +;Abstract: +; +; All global spinlocks in the kernel image are declared in this +; module. This is done so that each spinlock can be spaced out +; sufficiently to guaarantee that the L2 cache does not thrash +; by having a spinlock and another high use varible in the same +; cache line. +; +;Author: +; +; Ken Reneris (kenr) 13-Jan-1992 +; +;Revision History: +; +;-- +.386p + .xlist + +PADLOCKS equ 64 + + +SPINLOCK macro SpinLockName + public SpinLockName +SpinLockName dd 0 + +ifndef NT_UP + db PADLOCKS-4 dup (0) +endif +endm + +ULONG macro VaribleName + public VaribleName +VaribleName dd 0 + +ifndef NT_UP + db PADLOCKS-4 dup (0) +endif +endm + +_DATA SEGMENT PARA PUBLIC 'DATA' + +; +; Static SpinLocks from ntos\cc\cachedat.c +; + +;;align PADLOCKS + db PADLOCKS dup (0) + +SPINLOCK _CcMasterSpinLock +SPINLOCK _CcWorkQueueSpinlock +SPINLOCK _CcVacbSpinLock +SPINLOCK _CcDeferredWriteSpinLock +SPINLOCK _CcDebugTraceLock +SPINLOCK _CcBcbSpinLock + + +; +; Static SpinLocks from ntos\ex +; + +SPINLOCK _ExpLuidLock ; luid.c +SPINLOCK _NonPagedPoolLock ; pool.c +SPINLOCK _PoolTraceLock ; pool.c +SPINLOCK _ExpResourceSpinLock ; resource.c + + +; +; Static SpinLocks from ntos\io\iodata.c +; + +SPINLOCK _IopCompletionLock +SPINLOCK _IopCancelSpinLock +SPINLOCK _IopVpbSpinLock +SPINLOCK _IopDatabaseLock +SPINLOCK _IopErrorLogLock +SPINLOCK _IopErrorLogAllocationLock +SPINLOCK _IopTimerLock +SPINLOCK _IoStatisticsLock +SPINLOCK _IopFastLockSpinLock + + +; +; Static SpinLocks from ntos\kd\kdlock.c +; + +SPINLOCK _KdpDebuggerLock + + +; +; Static SpinLocks from ntos\ke\kernldat.c +; + +SPINLOCK _KiContextSwapLock +SPINLOCK _KiDispatcherLock +SPINLOCK _KiFreezeExecutionLock +SPINLOCK _KiFreezeLockBackup +ULONG _KiHardwareTrigger +SPINLOCK _KiProfileLock + +; +; Static SpinLocks from ntos\mm\miglobal.c +; + +SPINLOCK _MmPfnLock +SPINLOCK _MmSystemSpaceLock +SPINLOCK _MmChargeCommitmentLock +SPINLOCK _MmAllowWSExpansionLock + +; +; Static SpinLocks from ntos\ps\psinit.c +; + +SPINLOCK _PspEventPairLock +SPINLOCK _PsLoadedModuleSpinLock + +; +; Static SpinLocks from ntos\fsrtl\fsrtlp.c +; + +SPINLOCK _FsRtlStrucSupSpinLock ; fsrtlp.c + + db PADLOCKS dup (0) + +; +; KeTickCount - This is the number of clock ticks that have occurred since +; the system was booted. This count is used to compute a millisecond +; tick counter. +; + + public _KeTickCount +_KeTickCount dd 0, 0, 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 + +; +; KiMaximumDpcQueueDepth - This is used to control how many DPCs can be +; queued before a DPC of medium importance will trigger a dispatch +; interrupt. +; + + 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 + +_DATA ends + +end |