3 * LICENSE: BSD - See COPYING.ARM in the top level directory
4 * FILE: hal/halarm/generic/spinlock.c
5 * PURPOSE: SpinLock Routines
6 * PROGRAMMERS: ReactOS Portable Systems Group
9 /* INCLUDES ******************************************************************/
15 #undef KeAcquireSpinLock
16 #undef KeReleaseSpinLock
20 /* FUNCTIONS *****************************************************************/
27 KeRaiseIrql(KIRQL NewIrql
,
30 /* Call the fastcall function */
31 *OldIrql
= KfRaiseIrql(NewIrql
);
39 KeLowerIrql(KIRQL NewIrql
)
41 /* Call the fastcall function */
50 KeAcquireSpinLock(PKSPIN_LOCK SpinLock
,
53 /* Call the fastcall function */
54 *OldIrql
= KfAcquireSpinLock(SpinLock
);
62 KeAcquireSpinLockRaiseToSynch(PKSPIN_LOCK SpinLock
)
64 /* Simply raise to dispatch */
65 return KfRaiseIrql(DISPATCH_LEVEL
);
73 KeReleaseSpinLock(PKSPIN_LOCK SpinLock
,
76 /* Call the fastcall function */
77 KfReleaseSpinLock(SpinLock
, NewIrql
);
85 KfAcquireSpinLock(PKSPIN_LOCK SpinLock
)
87 /* Simply raise to dispatch */
88 return KfRaiseIrql(DISPATCH_LEVEL
);
96 KfReleaseSpinLock(PKSPIN_LOCK SpinLock
,
99 /* Simply lower IRQL back */
100 KeLowerIrql(OldIrql
);
108 KeAcquireQueuedSpinLock(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber
)
110 /* Simply raise to dispatch */
111 return KfRaiseIrql(DISPATCH_LEVEL
);
119 KeAcquireQueuedSpinLockRaiseToSynch(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber
)
121 /* Simply raise to dispatch */
122 return KfRaiseIrql(DISPATCH_LEVEL
);
130 KeAcquireInStackQueuedSpinLock(IN PKSPIN_LOCK SpinLock
,
131 IN PKLOCK_QUEUE_HANDLE LockHandle
)
133 /* Simply raise to dispatch */
134 LockHandle
->OldIrql
= KfRaiseIrql(DISPATCH_LEVEL
);
142 KeAcquireInStackQueuedSpinLockRaiseToSynch(IN PKSPIN_LOCK SpinLock
,
143 IN PKLOCK_QUEUE_HANDLE LockHandle
)
145 /* Simply raise to dispatch */
146 LockHandle
->OldIrql
= KfRaiseIrql(DISPATCH_LEVEL
);
154 KeReleaseQueuedSpinLock(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber
,
157 /* Simply lower IRQL back */
158 KfLowerIrql(OldIrql
);
166 KeReleaseInStackQueuedSpinLock(IN PKLOCK_QUEUE_HANDLE LockHandle
)
168 /* Simply lower IRQL back */
169 KfLowerIrql(LockHandle
->OldIrql
);
177 KeTryToAcquireQueuedSpinLockRaiseToSynch(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber
,
180 /* Simply raise to synch */
181 KeRaiseIrql(SYNCH_LEVEL
, OldIrql
);
183 /* Always return true on UP Machines */
192 KeTryToAcquireQueuedSpinLock(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber
,
195 /* Simply raise to dispatch */
196 KeRaiseIrql(DISPATCH_LEVEL
, OldIrql
);
198 /* Always return true on UP Machines */