Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenspinlock.c
Go to the documentation of this file.
00001 /* 00002 * PROJECT: ReactOS HAL 00003 * LICENSE: BSD - See COPYING.ARM in the top level directory 00004 * FILE: hal/halarm/generic/spinlock.c 00005 * PURPOSE: SpinLock Routines 00006 * PROGRAMMERS: ReactOS Portable Systems Group 00007 */ 00008 00009 /* INCLUDES ******************************************************************/ 00010 00011 #include <hal.h> 00012 #define NDEBUG 00013 #include <debug.h> 00014 00015 #undef KeAcquireSpinLock 00016 #undef KeReleaseSpinLock 00017 #undef KeRaiseIrql 00018 #undef KeLowerIrql 00019 00020 /* FUNCTIONS *****************************************************************/ 00021 00022 /* 00023 * @implemented 00024 */ 00025 VOID 00026 NTAPI 00027 KeRaiseIrql(KIRQL NewIrql, 00028 PKIRQL OldIrql) 00029 { 00030 /* Call the fastcall function */ 00031 *OldIrql = KfRaiseIrql(NewIrql); 00032 } 00033 00034 /* 00035 * @implemented 00036 */ 00037 VOID 00038 NTAPI 00039 KeLowerIrql(KIRQL NewIrql) 00040 { 00041 /* Call the fastcall function */ 00042 KfLowerIrql(NewIrql); 00043 } 00044 00045 /* 00046 * @implemented 00047 */ 00048 VOID 00049 NTAPI 00050 KeAcquireSpinLock(PKSPIN_LOCK SpinLock, 00051 PKIRQL OldIrql) 00052 { 00053 /* Call the fastcall function */ 00054 *OldIrql = KfAcquireSpinLock(SpinLock); 00055 } 00056 00057 /* 00058 * @implemented 00059 */ 00060 KIRQL 00061 FASTCALL 00062 KeAcquireSpinLockRaiseToSynch(PKSPIN_LOCK SpinLock) 00063 { 00064 /* Simply raise to dispatch */ 00065 return KfRaiseIrql(DISPATCH_LEVEL); 00066 } 00067 00068 /* 00069 * @implemented 00070 */ 00071 VOID 00072 NTAPI 00073 KeReleaseSpinLock(PKSPIN_LOCK SpinLock, 00074 KIRQL NewIrql) 00075 { 00076 /* Call the fastcall function */ 00077 KfReleaseSpinLock(SpinLock, NewIrql); 00078 } 00079 00080 /* 00081 * @implemented 00082 */ 00083 KIRQL 00084 FASTCALL 00085 KfAcquireSpinLock(PKSPIN_LOCK SpinLock) 00086 { 00087 /* Simply raise to dispatch */ 00088 return KfRaiseIrql(DISPATCH_LEVEL); 00089 } 00090 00091 /* 00092 * @implemented 00093 */ 00094 VOID 00095 FASTCALL 00096 KfReleaseSpinLock(PKSPIN_LOCK SpinLock, 00097 KIRQL OldIrql) 00098 { 00099 /* Simply lower IRQL back */ 00100 KeLowerIrql(OldIrql); 00101 } 00102 00103 /* 00104 * @implemented 00105 */ 00106 KIRQL 00107 FASTCALL 00108 KeAcquireQueuedSpinLock(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber) 00109 { 00110 /* Simply raise to dispatch */ 00111 return KfRaiseIrql(DISPATCH_LEVEL); 00112 } 00113 00114 /* 00115 * @implemented 00116 */ 00117 KIRQL 00118 FASTCALL 00119 KeAcquireQueuedSpinLockRaiseToSynch(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber) 00120 { 00121 /* Simply raise to dispatch */ 00122 return KfRaiseIrql(DISPATCH_LEVEL); 00123 } 00124 00125 /* 00126 * @implemented 00127 */ 00128 VOID 00129 FASTCALL 00130 KeAcquireInStackQueuedSpinLock(IN PKSPIN_LOCK SpinLock, 00131 IN PKLOCK_QUEUE_HANDLE LockHandle) 00132 { 00133 /* Simply raise to dispatch */ 00134 LockHandle->OldIrql = KfRaiseIrql(DISPATCH_LEVEL); 00135 } 00136 00137 /* 00138 * @implemented 00139 */ 00140 VOID 00141 FASTCALL 00142 KeAcquireInStackQueuedSpinLockRaiseToSynch(IN PKSPIN_LOCK SpinLock, 00143 IN PKLOCK_QUEUE_HANDLE LockHandle) 00144 { 00145 /* Simply raise to dispatch */ 00146 LockHandle->OldIrql = KfRaiseIrql(DISPATCH_LEVEL); 00147 } 00148 00149 /* 00150 * @implemented 00151 */ 00152 VOID 00153 FASTCALL 00154 KeReleaseQueuedSpinLock(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber, 00155 IN KIRQL OldIrql) 00156 { 00157 /* Simply lower IRQL back */ 00158 KfLowerIrql(OldIrql); 00159 } 00160 00161 /* 00162 * @implemented 00163 */ 00164 VOID 00165 FASTCALL 00166 KeReleaseInStackQueuedSpinLock(IN PKLOCK_QUEUE_HANDLE LockHandle) 00167 { 00168 /* Simply lower IRQL back */ 00169 KfLowerIrql(LockHandle->OldIrql); 00170 } 00171 00172 /* 00173 * @implemented 00174 */ 00175 BOOLEAN 00176 FASTCALL 00177 KeTryToAcquireQueuedSpinLockRaiseToSynch(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber, 00178 IN PKIRQL OldIrql) 00179 { 00180 /* Simply raise to synch */ 00181 KeRaiseIrql(SYNCH_LEVEL, OldIrql); 00182 00183 /* Always return true on UP Machines */ 00184 return TRUE; 00185 } 00186 00187 /* 00188 * @implemented 00189 */ 00190 LOGICAL 00191 FASTCALL 00192 KeTryToAcquireQueuedSpinLock(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber, 00193 OUT PKIRQL OldIrql) 00194 { 00195 /* Simply raise to dispatch */ 00196 KeRaiseIrql(DISPATCH_LEVEL, OldIrql); 00197 00198 /* Always return true on UP Machines */ 00199 return TRUE; 00200 } 00201 00202 /* EOF */ Generated on Sat May 26 2012 04:27:16 for ReactOS by
1.7.6.1
|