2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS NDIS library
5 * PURPOSE: Program control routines
6 * PROGRAMMERS: Casper S. Hornstrup (chorns@users.sourceforge.net)
8 * CSH 01/08-2000 Created
17 NdisReinitializePacket(
18 IN OUT PNDIS_PACKET Packet)
20 (Packet)->Private.Head = (PNDIS_BUFFER)NULL;
21 (Packet)->Private.ValidCounts = FALSE;
30 NdisAcquireReadWriteLock(
31 IN PNDIS_RW_LOCK Lock,
33 IN PLOCK_STATE LockState)
51 IN PNDIS_SPIN_LOCK SpinLock)
53 * FUNCTION: Acquires a spin lock for exclusive access to a resource
55 * SpinLock = Pointer to the initialized NDIS spin lock to be acquired
58 KeAcquireSpinLock(&SpinLock->SpinLock, &SpinLock->OldIrql);
68 IN PNDIS_SPIN_LOCK SpinLock)
70 * FUNCTION: Initializes for an NDIS spin lock
72 * SpinLock = Pointer to an NDIS spin lock structure
75 KeInitializeSpinLock(&SpinLock->SpinLock);
84 NdisDprAcquireSpinLock(
85 IN PNDIS_SPIN_LOCK SpinLock)
87 * FUNCTION: Acquires a spin lock from IRQL DISPATCH_LEVEL
89 * SpinLock = Pointer to the initialized NDIS spin lock to be acquired
92 KeAcquireSpinLockAtDpcLevel(&SpinLock->SpinLock);
93 SpinLock->OldIrql = DISPATCH_LEVEL;
102 NdisDprReleaseSpinLock(
103 IN PNDIS_SPIN_LOCK SpinLock)
105 * FUNCTION: Releases an acquired spin lock from IRQL DISPATCH_LEVEL
107 * SpinLock = Pointer to the acquired NDIS spin lock to be released
110 KeReleaseSpinLockFromDpcLevel(&SpinLock->SpinLock);
120 IN PNDIS_SPIN_LOCK SpinLock)
122 * FUNCTION: Releases a spin lock initialized with NdisAllocateSpinLock
124 * SpinLock = Pointer to an initialized NDIS spin lock
127 /* Nothing to do here! */
136 NdisGetCurrentProcessorCpuUsage(
139 * FUNCTION: Returns how busy the current processor is as a percentage
141 * pCpuUsage = Pointer to a buffer to place CPU usage
154 IN PNDIS_EVENT Event)
156 * FUNCTION: Initializes an event to be used for synchronization
158 * Event = Pointer to an NDIS event structure to be initialized
161 KeInitializeEvent(&Event->Event, NotificationEvent, FALSE);
171 IN PNDIS_SPIN_LOCK SpinLock)
173 * FUNCTION: Releases a spin lock previously acquired with NdisAcquireSpinLock
175 * SpinLock = Pointer to the acquired NDIS spin lock to be released
178 KeReleaseSpinLock(&SpinLock->SpinLock, SpinLock->OldIrql);
188 IN PNDIS_EVENT Event)
190 * FUNCTION: Clears the signaled state of an event
192 * Event = Pointer to the initialized event object to be reset
195 KeResetEvent(&Event->Event);
205 IN PNDIS_EVENT Event)
207 * FUNCTION: Sets an event to a signaled state if not already signaled
209 * Event = Pointer to the initialized event object to be set
212 KeSetEvent(&Event->Event, IO_NO_INCREMENT, FALSE);
222 IN PNDIS_EVENT Event,
225 * FUNCTION: Waits for an event to become signaled
227 * Event = Pointer to the initialized event object to wait for
228 * MsToWait = Maximum milliseconds to wait for the event to become signaled
230 * TRUE if the event is in the signaled state
233 LARGE_INTEGER Timeout;
236 Timeout.QuadPart = MsToWait * -10000LL;
238 Status = KeWaitForSingleObject(&Event->Event,
244 return (Status == STATUS_SUCCESS);