From 00d19927ae9a3d90891583e62d4a9438fde4ec37 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Tue, 27 May 2003 20:59:24 +0000 Subject: [PATCH] Implemented spinlock and event functions. svn path=/trunk/; revision=4784 --- reactos/drivers/net/ndis/ndis/control.c | 32 ++++++++++++++++--------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/reactos/drivers/net/ndis/ndis/control.c b/reactos/drivers/net/ndis/ndis/control.c index 3947bc520d3..51f38833bce 100644 --- a/reactos/drivers/net/ndis/ndis/control.c +++ b/reactos/drivers/net/ndis/ndis/control.c @@ -45,7 +45,7 @@ NdisAcquireSpinLock( * SpinLock = Pointer to the initialized NDIS spin lock to be acquired */ { - UNIMPLEMENTED + KeAcquireSpinLock(&SpinLock->SpinLock, &SpinLock->OldIrql); } @@ -59,7 +59,7 @@ NdisAllocateSpinLock( * SpinLock = Pointer to an NDIS spin lock structure */ { - UNIMPLEMENTED + KeInitializeSpinLock(&SpinLock->SpinLock); } @@ -73,7 +73,8 @@ NdisDprAcquireSpinLock( * SpinLock = Pointer to the initialized NDIS spin lock to be acquired */ { - UNIMPLEMENTED + KeAcquireSpinLockAtDpcLevel(&SpinLock->SpinLock); + SpinLock->OldIrql = DISPATCH_LEVEL; } @@ -87,7 +88,7 @@ NdisDprReleaseSpinLock( * SpinLock = Pointer to the acquired NDIS spin lock to be released */ { - UNIMPLEMENTED + KeReleaseSpinLockFromDpcLevel(&SpinLock->SpinLock); } @@ -101,7 +102,7 @@ NdisFreeSpinLock( * SpinLock = Pointer to an initialized NDIS spin lock */ { - UNIMPLEMENTED + /* Nothing to do here! */ } @@ -129,7 +130,7 @@ NdisInitializeEvent( * Event = Pointer to an NDIS event structure to be initialized */ { - UNIMPLEMENTED + KeInitializeEvent(&Event->Event, NotificationEvent, FALSE); } @@ -143,7 +144,7 @@ NdisReleaseSpinLock( * SpinLock = Pointer to the acquired NDIS spin lock to be released */ { - UNIMPLEMENTED + KeReleaseSpinLock(&SpinLock->SpinLock, SpinLock->OldIrql); } @@ -157,7 +158,7 @@ NdisResetEvent( * Event = Pointer to the initialized event object to be reset */ { - UNIMPLEMENTED + KeResetEvent(&Event->Event); } @@ -171,7 +172,7 @@ NdisSetEvent( * Event = Pointer to the initialized event object to be set */ { - UNIMPLEMENTED + KeSetEvent(&Event->Event, IO_NO_INCREMENT, FALSE); } @@ -189,9 +190,18 @@ NdisWaitEvent( * TRUE if the event is in the signaled state */ { - UNIMPLEMENTED + LARGE_INTEGER Timeout; + NTSTATUS Status; - return FALSE; + Timeout.QuadPart = MsToWait * -10000LL; + + Status = KeWaitForSingleObject(&Event->Event, + Executive, + KernelMode, + TRUE, + &Timeout); + + return (Status == STATUS_SUCCESS); } /* EOF */