NDIS interface library spin lock functions are described in Table A.2.A.2. These functions deal with initialization, acquisition, release, and freeing of spin locks. In a multiprocessor environment, they address both interprocessor and intraprocessor synchronization at the same time. For a uniprocessor environment, the functions are optimized to ignore interprocessor synchronization. Spin lock functions use executive spin locks; therefore the NIC driver cannot call them if it is running above the IRQL DISPATCH_LEVEL within MacInterruptServiceRoutine or NdisSynchronizeWithInterrupt.
Table A.2.14 Spin Lock Functions
Function | Definition |
NdisAcquireSpinLock | Acquires an NDIS interface library spin lock to give the driver exclusive use of resources that the spin lock protects. |
NdisAllocateSpinLock | Initializes an NDIS interface library spin lock, setting it to the released state. |
NdisDprAcquireSpinLock | Called by MacDeferredProcessingRoutine to acquire a spin lock. |
NdisDprReleaseSpinLock | Releases a spin lock the DPR has acquired by calling NdisDprAcquireSpinLock. |
NdisFreeSpinLock | Frees a structure that NdisAllocateSpinLock has allocated as an NDIS interface library spin lock. |
NdisReleaseSpinLock | Releases an acquired spin lock so that other executing threads can use resources that it protects. |