ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

spinlock.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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.