3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: hal/halx86/up/spinlock.c
5 * PURPOSE: Spinlock and Queued Spinlock Support
6 * PROGRAMMERS: Alex Ionescu (alex.ionescu@reactos.org)
9 /* INCLUDES ******************************************************************/
15 #undef KeAcquireSpinLock
16 #undef KeReleaseSpinLock
18 /* FUNCTIONS *****************************************************************/
24 KeAcquireSpinLockRaiseToSynch(PKSPIN_LOCK SpinLock
)
28 /* Simply raise to dispatch */
29 KeRaiseIrql(DISPATCH_LEVEL
, &OldIrql
);
41 KeAcquireSpinLockRaiseToDpc(PKSPIN_LOCK SpinLock
)
45 /* Simply raise to dispatch */
46 KeRaiseIrql(DISPATCH_LEVEL
, &OldIrql
);
58 KeReleaseSpinLock(PKSPIN_LOCK SpinLock
,
62 /* Simply lower IRQL back */
73 KeAcquireQueuedSpinLock(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber
)
77 /* Simply raise to dispatch */
78 KeRaiseIrql(DISPATCH_LEVEL
, &OldIrql
);
89 KeAcquireQueuedSpinLockRaiseToSynch(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber
)
93 /* Simply raise to dispatch */
94 KeRaiseIrql(DISPATCH_LEVEL
, &OldIrql
);
105 KeAcquireInStackQueuedSpinLock(IN PKSPIN_LOCK SpinLock
,
106 IN PKLOCK_QUEUE_HANDLE LockHandle
)
109 /* Simply raise to dispatch */
110 KeRaiseIrql(DISPATCH_LEVEL
, &LockHandle
->OldIrql
);
120 KeAcquireInStackQueuedSpinLockRaiseToSynch(IN PKSPIN_LOCK SpinLock
,
121 IN PKLOCK_QUEUE_HANDLE LockHandle
)
124 /* Simply raise to synch */
125 KeRaiseIrql(SYNCH_LEVEL
, &LockHandle
->OldIrql
);
135 KeReleaseQueuedSpinLock(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber
,
139 /* Simply lower IRQL back */
140 KeLowerIrql(OldIrql
);
150 KeReleaseInStackQueuedSpinLock(IN PKLOCK_QUEUE_HANDLE LockHandle
)
153 /* Simply lower IRQL back */
154 KeLowerIrql(LockHandle
->OldIrql
);
164 KeTryToAcquireQueuedSpinLockRaiseToSynch(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber
,
168 /* Simply raise to dispatch */
169 KeRaiseIrql(DISPATCH_LEVEL
, OldIrql
);
171 /* Always return true on UP Machines */
182 KeTryToAcquireQueuedSpinLock(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber
,
186 /* Simply raise to dispatch */
187 KeRaiseIrql(DISPATCH_LEVEL
, OldIrql
);
189 /* Always return true on UP Machines */