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
)
27 /* Simply raise to dispatch */
28 return KfRaiseIrql(DISPATCH_LEVEL
);
39 KeAcquireSpinLockRaiseToDpc(PKSPIN_LOCK SpinLock
)
42 /* Simply raise to dispatch */
43 return KfRaiseIrql(DISPATCH_LEVEL
);
54 KeReleaseSpinLock(PKSPIN_LOCK SpinLock
,
58 /* Simply lower IRQL back */
69 KeAcquireQueuedSpinLock(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber
)
72 /* Simply raise to dispatch */
73 return KfRaiseIrql(DISPATCH_LEVEL
);
83 KeAcquireQueuedSpinLockRaiseToSynch(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber
)
86 /* Simply raise to dispatch */
87 return KfRaiseIrql(DISPATCH_LEVEL
);
97 KeAcquireInStackQueuedSpinLock(IN PKSPIN_LOCK SpinLock
,
98 IN PKLOCK_QUEUE_HANDLE LockHandle
)
101 /* Simply raise to dispatch */
102 LockHandle
->OldIrql
= KfRaiseIrql(DISPATCH_LEVEL
);
112 KeAcquireInStackQueuedSpinLockRaiseToSynch(IN PKSPIN_LOCK SpinLock
,
113 IN PKLOCK_QUEUE_HANDLE LockHandle
)
116 /* Simply raise to synch */
117 LockHandle
->OldIrql
= KfRaiseIrql(SYNCH_LEVEL
);
127 KeReleaseQueuedSpinLock(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber
,
131 /* Simply lower IRQL back */
132 KfLowerIrql(OldIrql
);
142 KeReleaseInStackQueuedSpinLock(IN PKLOCK_QUEUE_HANDLE LockHandle
)
145 /* Simply lower IRQL back */
146 KfLowerIrql(LockHandle
->OldIrql
);
156 KeTryToAcquireQueuedSpinLockRaiseToSynch(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber
,
160 /* Simply raise to dispatch */
161 *OldIrql
= KfRaiseIrql(DISPATCH_LEVEL
);
163 /* Always return true on UP Machines */
174 KeTryToAcquireQueuedSpinLock(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber
,
178 /* Simply raise to dispatch */
179 *OldIrql
= KfRaiseIrql(DISPATCH_LEVEL
);
181 /* Always return true on UP Machines */