2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS kernel
4 * FILE: ntoskrnl/hal/halx86/up/spinlock.c
5 * PURPOSE: Implements spinlocks
6 * PROGRAMMER: Alex Ionescu (alex@relsoft.net)
9 /* INCLUDES ****************************************************************/
15 #undef KeAcquireSpinLock
16 #undef KeReleaseSpinLock
18 /* FUNCTIONS ***************************************************************/
25 KeAcquireSpinLock(PKSPIN_LOCK SpinLock
,
28 /* Call the fastcall function */
29 *OldIrql
= KfAcquireSpinLock(SpinLock
);
37 KeAcquireSpinLockRaiseToSynch(PKSPIN_LOCK SpinLock
)
39 /* Simply raise to dispatch */
40 return KfRaiseIrql(DISPATCH_LEVEL
);
48 KeReleaseSpinLock(PKSPIN_LOCK SpinLock
,
51 /* Call the fastcall function */
52 KfReleaseSpinLock(SpinLock
, NewIrql
);
60 KfAcquireSpinLock(PKSPIN_LOCK SpinLock
)
62 /* Simply raise to dispatch */
63 return KfRaiseIrql(DISPATCH_LEVEL
);
71 KfReleaseSpinLock(PKSPIN_LOCK SpinLock
,
74 /* Simply lower IRQL back */
83 KeAcquireQueuedSpinLock(IN PKLOCK_QUEUE_HANDLE LockHandle
)
85 /* Simply raise to dispatch */
86 return KfRaiseIrql(DISPATCH_LEVEL
);
94 KeAcquireQueuedSpinLockRaiseToSynch(IN PKLOCK_QUEUE_HANDLE LockHandle
)
96 /* Simply raise to dispatch */
97 return KfRaiseIrql(DISPATCH_LEVEL
);
105 KeAcquireInStackQueuedSpinLock(IN PKSPIN_LOCK SpinLock
,
106 IN PKLOCK_QUEUE_HANDLE LockHandle
)
108 /* Simply raise to dispatch */
109 LockHandle
->OldIrql
= KfRaiseIrql(DISPATCH_LEVEL
);
117 KeReleaseQueuedSpinLock(IN PKLOCK_QUEUE_HANDLE LockHandle
,
120 /* Simply lower IRQL back */
121 KfLowerIrql(OldIrql
);
129 KeReleaseInStackQueuedSpinLock(IN PKLOCK_QUEUE_HANDLE LockHandle
)
131 /* Simply lower IRQL back */
132 KfLowerIrql(LockHandle
->OldIrql
);
140 KeTryToAcquireQueuedSpinLockRaiseToSynch(IN PKLOCK_QUEUE_HANDLE LockHandle
,
143 /* Simply raise to dispatch */
144 *OldIrql
= KfRaiseIrql(DISPATCH_LEVEL
);
146 /* Always return true on UP Machines */
155 KeTryToAcquireQueuedSpinLock(IN PKLOCK_QUEUE_HANDLE LockHandle
,
158 /* Simply raise to dispatch */
159 *OldIrql
= KfRaiseIrql(DISPATCH_LEVEL
);
161 /* Always return true on UP Machines */