[ros-diffs] [cgutman] 40777: - Implement NdisCopyBuffer and NdisGetCurrentProcessorCpuUsage - Patch by Dmitry Chapyshev

cgutman at svn.reactos.org cgutman at svn.reactos.org
Sun May 3 16:38:14 CEST 2009


Author: cgutman
Date: Sun May  3 18:38:13 2009
New Revision: 40777

URL: http://svn.reactos.org/svn/reactos?rev=40777&view=rev
Log:
 - Implement NdisCopyBuffer and NdisGetCurrentProcessorCpuUsage
 - Patch by Dmitry Chapyshev

Modified:
    trunk/reactos/drivers/network/ndis/include/ndissys.h
    trunk/reactos/drivers/network/ndis/ndis/50stubs.c
    trunk/reactos/drivers/network/ndis/ndis/buffer.c
    trunk/reactos/drivers/network/ndis/ndis/misc.c

Modified: trunk/reactos/drivers/network/ndis/include/ndissys.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/network/ndis/include/ndissys.h?rev=40777&r1=40776&r2=40777&view=diff
==============================================================================
--- trunk/reactos/drivers/network/ndis/include/ndissys.h [iso-8859-1] (original)
+++ trunk/reactos/drivers/network/ndis/include/ndissys.h [iso-8859-1] Sun May  3 18:38:13 2009
@@ -511,10 +511,15 @@
 VOID
 NTAPI
 ExGetCurrentProcessorCounts(
-  PULONG ThreadKernelTime,
+   PULONG ThreadKernelTime,
    PULONG TotalCpuTime,
    PULONG ProcessorNumber);
 
+VOID
+NTAPI
+ExGetCurrentProcessorCpuUsage(
+    PULONG CpuUsage);
+
 #endif /* __NDISSYS_H */
 
 /* EOF */

Modified: trunk/reactos/drivers/network/ndis/ndis/50stubs.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/network/ndis/ndis/50stubs.c?rev=40777&r1=40776&r2=40777&view=diff
==============================================================================
--- trunk/reactos/drivers/network/ndis/ndis/50stubs.c [iso-8859-1] (original)
+++ trunk/reactos/drivers/network/ndis/ndis/50stubs.c [iso-8859-1] Sun May  3 18:38:13 2009
@@ -551,48 +551,3 @@
 {
    UNIMPLEMENTED
 }
-
-/*
- * @unimplemented
- */
-VOID
-EXPORT
-NdisCopyBuffer(
-    OUT PNDIS_STATUS    Status,
-    OUT PNDIS_BUFFER    *Buffer,
-    IN  NDIS_HANDLE     PoolHandle,
-    IN  PVOID           MemoryDescriptor,
-    IN  UINT            Offset,
-    IN  UINT            Length)
-/*
- * FUNCTION: Returns a new buffer descriptor for a (partial) buffer
- * ARGUMENTS:
- *     Status           = Address of a buffer to place status of operation
- *     Buffer           = Address of a buffer to place new buffer descriptor
- *     PoolHandle       = Handle returned by NdisAllocateBufferPool
- *     MemoryDescriptor = Pointer to a memory descriptor (possibly NDIS_BUFFER)
- *     Offset           = Offset in buffer to start copying
- *     Length           = Number of bytes to copy
- */
-{
-    UNIMPLEMENTED
-
-    *Status = NDIS_STATUS_FAILURE;
-}
-
-
-/*
- * @unimplemented
- */
-VOID
-EXPORT
-NdisGetCurrentProcessorCpuUsage(
-    PULONG  pCpuUsage)
-/*
- * FUNCTION: Returns how busy the current processor is as a percentage
- * ARGUMENTS:
- *     pCpuUsage = Pointer to a buffer to place CPU usage
- */
-{
-    UNIMPLEMENTED
-}

Modified: trunk/reactos/drivers/network/ndis/ndis/buffer.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/network/ndis/ndis/buffer.c?rev=40777&r1=40776&r2=40777&view=diff
==============================================================================
--- trunk/reactos/drivers/network/ndis/ndis/buffer.c [iso-8859-1] (original)
+++ trunk/reactos/drivers/network/ndis/ndis/buffer.c [iso-8859-1] Sun May  3 18:38:13 2009
@@ -1111,4 +1111,47 @@
     *Buffer = NdisBuffer;
 }
 
+/*
+ * @implemented
+ */
+VOID
+EXPORT
+NdisCopyBuffer(
+    OUT PNDIS_STATUS    Status,
+    OUT PNDIS_BUFFER    *Buffer,
+    IN  NDIS_HANDLE     PoolHandle,
+    IN  PVOID           MemoryDescriptor,
+    IN  UINT            Offset,
+    IN  UINT            Length)
+/*
+ * FUNCTION: Returns a new buffer descriptor for a (partial) buffer
+ * ARGUMENTS:
+ *     Status           = Address of a buffer to place status of operation
+ *     Buffer           = Address of a buffer to place new buffer descriptor
+ *     PoolHandle       = Handle returned by NdisAllocateBufferPool
+ *     MemoryDescriptor = Pointer to a memory descriptor (possibly NDIS_BUFFER)
+ *     Offset           = Offset in buffer to start copying
+ *     Length           = Number of bytes to copy
+ */
+{
+    PVOID CurrentVa = (PUCHAR)(MmGetMdlVirtualAddress((PNDIS_BUFFER)MemoryDescriptor)) + Offset;
+
+    NDIS_DbgPrint(MAX_TRACE, ("Called\n"));
+
+    *Buffer = IoAllocateMdl(CurrentVa, Length, FALSE, FALSE, NULL);
+    if (!*Buffer)
+    {
+        *Status = NDIS_STATUS_FAILURE;
+        return;
+    }
+
+    IoBuildPartialMdl((PNDIS_BUFFER)MemoryDescriptor,
+                      *Buffer,
+                      CurrentVa,
+                      Length);
+
+    (*Buffer)->Next = NULL;
+    *Status = NDIS_STATUS_SUCCESS;
+}
+
 /* EOF */

Modified: trunk/reactos/drivers/network/ndis/ndis/misc.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/network/ndis/ndis/misc.c?rev=40777&r1=40776&r2=40777&view=diff
==============================================================================
--- trunk/reactos/drivers/network/ndis/ndis/misc.c [iso-8859-1] (original)
+++ trunk/reactos/drivers/network/ndis/ndis/misc.c [iso-8859-1] Sun May  3 18:38:13 2009
@@ -402,4 +402,20 @@
     return NDIS_STATUS_SUCCESS;
 }
 
+/*
+ * @implemented
+ */
+VOID
+EXPORT
+NdisGetCurrentProcessorCpuUsage(
+    PULONG  pCpuUsage)
+/*
+ * FUNCTION: Returns how busy the current processor is as a percentage
+ * ARGUMENTS:
+ *     pCpuUsage = Pointer to a buffer to place CPU usage
+ */
+{
+    ExGetCurrentProcessorCpuUsage(pCpuUsage);
+}
+
 /* EOF */



More information about the Ros-diffs mailing list