branch update for HEAD-2003091401
[reactos.git] / drivers / net / ndis / ndis / control.c
index 3947bc5..f7e33b9 100644 (file)
@@ -9,6 +9,9 @@
  */
 #include <ndissys.h>
 
+/*
+ * @implemented
+ */
 VOID
 EXPORT
 NdisReinitializePacket(
@@ -18,6 +21,10 @@ NdisReinitializePacket(
        (Packet)->Private.ValidCounts = FALSE;
 }
 
+
+/*
+ * @unimplemented
+ */
 VOID
 EXPORT
 NdisAcquireReadWriteLock(
@@ -35,6 +42,9 @@ NdisAcquireReadWriteLock(
 }
 
 
+/*
+ * @implemented
+ */
 VOID
 EXPORT
 NdisAcquireSpinLock(
@@ -45,10 +55,13 @@ NdisAcquireSpinLock(
  *     SpinLock = Pointer to the initialized NDIS spin lock to be acquired
  */
 {
-    UNIMPLEMENTED
+    KeAcquireSpinLock(&SpinLock->SpinLock, &SpinLock->OldIrql);
 }
 
 
+/*
+ * @implemented
+ */
 VOID
 EXPORT
 NdisAllocateSpinLock(
@@ -59,10 +72,13 @@ NdisAllocateSpinLock(
  *     SpinLock = Pointer to an NDIS spin lock structure
  */
 {
-    UNIMPLEMENTED
+    KeInitializeSpinLock(&SpinLock->SpinLock);
 }
 
 
+/*
+ * @implemented
+ */
 VOID
 EXPORT
 NdisDprAcquireSpinLock(
@@ -73,10 +89,14 @@ NdisDprAcquireSpinLock(
  *     SpinLock = Pointer to the initialized NDIS spin lock to be acquired
  */
 {
-    UNIMPLEMENTED
+    KeAcquireSpinLockAtDpcLevel(&SpinLock->SpinLock);
+    SpinLock->OldIrql = DISPATCH_LEVEL;
 }
 
 
+/*
+ * @implemented
+ */
 VOID
 EXPORT
 NdisDprReleaseSpinLock(
@@ -87,10 +107,13 @@ NdisDprReleaseSpinLock(
  *     SpinLock = Pointer to the acquired NDIS spin lock to be released
  */
 {
-    UNIMPLEMENTED
+    KeReleaseSpinLockFromDpcLevel(&SpinLock->SpinLock);
 }
 
 
+/*
+ * @implemented
+ */
 VOID
 EXPORT
 NdisFreeSpinLock(
@@ -101,10 +124,13 @@ NdisFreeSpinLock(
  *     SpinLock = Pointer to an initialized NDIS spin lock
  */
 {
-    UNIMPLEMENTED
+    /* Nothing to do here! */
 }
 
 
+/*
+ * @unimplemented
+ */
 VOID
 EXPORT
 NdisGetCurrentProcessorCpuUsage(
@@ -119,6 +145,9 @@ NdisGetCurrentProcessorCpuUsage(
 }
 
 
+/*
+ * @implemented
+ */
 VOID
 EXPORT
 NdisInitializeEvent(
@@ -129,10 +158,13 @@ NdisInitializeEvent(
  *     Event = Pointer to an NDIS event structure to be initialized
  */
 {
-    UNIMPLEMENTED
+    KeInitializeEvent(&Event->Event, NotificationEvent, FALSE);
 }
 
 
+/*
+ * @implemented
+ */
 VOID
 EXPORT
 NdisReleaseSpinLock(
@@ -143,10 +175,13 @@ NdisReleaseSpinLock(
  *     SpinLock = Pointer to the acquired NDIS spin lock to be released
  */
 {
-    UNIMPLEMENTED
+    KeReleaseSpinLock(&SpinLock->SpinLock, SpinLock->OldIrql);
 }
 
 
+/*
+ * @implemented
+ */
 VOID
 EXPORT
 NdisResetEvent(
@@ -157,10 +192,13 @@ NdisResetEvent(
  *     Event = Pointer to the initialized event object to be reset
  */
 {
-    UNIMPLEMENTED
+    KeResetEvent(&Event->Event);
 }
 
 
+/*
+ * @implemented
+ */
 VOID
 EXPORT
 NdisSetEvent(
@@ -171,10 +209,13 @@ NdisSetEvent(
  *     Event = Pointer to the initialized event object to be set
  */
 {
-    UNIMPLEMENTED
+    KeSetEvent(&Event->Event, IO_NO_INCREMENT, FALSE);
 }
 
 
+/*
+ * @implemented
+ */
 BOOLEAN
 EXPORT
 NdisWaitEvent(
@@ -189,9 +230,18 @@ NdisWaitEvent(
  *     TRUE if the event is in the signaled state
  */
 {
-    UNIMPLEMENTED
+    LARGE_INTEGER Timeout;
+    NTSTATUS Status;
+
+    Timeout.QuadPart = MsToWait * -10000LL;
+
+    Status = KeWaitForSingleObject(&Event->Event,
+                                  Executive,
+                                  KernelMode,
+                                  TRUE,
+                                  &Timeout);
 
-    return FALSE;
+    return (Status == STATUS_SUCCESS);
 }
 
 /* EOF */