summaryrefslogtreecommitdiffstats
path: root/private/ntos/ex/i386/splocks.asm
diff options
context:
space:
mode:
Diffstat (limited to 'private/ntos/ex/i386/splocks.asm')
-rw-r--r--private/ntos/ex/i386/splocks.asm208
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