[ros-diffs] [cgutman] 53143: [IP] - Merge r53134 and r53135 from the GSoC TCP/IP branch

cgutman at svn.reactos.org cgutman at svn.reactos.org
Mon Aug 8 21:28:50 UTC 2011


Author: cgutman
Date: Mon Aug  8 21:28:50 2011
New Revision: 53143

URL: http://svn.reactos.org/svn/reactos?rev=53143&view=rev
Log:
[IP]
- Merge r53134 and r53135 from the GSoC TCP/IP branch

Modified:
    trunk/reactos/lib/drivers/ip/transport/tcp/accept.c
    trunk/reactos/lib/drivers/ip/transport/tcp/event.c
    trunk/reactos/lib/drivers/ip/transport/tcp/tcp.c

Modified: trunk/reactos/lib/drivers/ip/transport/tcp/accept.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/drivers/ip/transport/tcp/accept.c?rev=53143&r1=53142&r2=53143&view=diff
==============================================================================
--- trunk/reactos/lib/drivers/ip/transport/tcp/accept.c [iso-8859-1] (original)
+++ trunk/reactos/lib/drivers/ip/transport/tcp/accept.c [iso-8859-1] Mon Aug  8 21:28:50 2011
@@ -11,6 +11,8 @@
 #include "precomp.h"
 
 #include "rosip.h"
+
+extern NPAGED_LOOKASIDE_LIST TdiBucketLookasideList;
 
 NTSTATUS TCPCheckPeerForAccept(PVOID Context,
                                PTDI_REQUEST_KERNEL Request)
@@ -118,7 +120,7 @@
         {
             DereferenceObject(Bucket->AssociatedEndpoint);
             RemoveEntryList( &Bucket->Entry );
-            ExFreePoolWithTag( Bucket, TDI_BUCKET_TAG );
+            ExFreeToNPagedLookasideList(&TdiBucketLookasideList, Bucket);
             Found = TRUE;
             break;
         }
@@ -143,9 +145,7 @@
 
     LockObject(Listener, &OldIrql);
 
-    Bucket = (PTDI_BUCKET)ExAllocatePoolWithTag(NonPagedPool,
-                                    sizeof(*Bucket),
-                                    TDI_BUCKET_TAG );
+    Bucket = ExAllocateFromNPagedLookasideList(&TdiBucketLookasideList);
     
     if (Bucket)
     {

Modified: trunk/reactos/lib/drivers/ip/transport/tcp/event.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/drivers/ip/transport/tcp/event.c?rev=53143&r1=53142&r2=53143&view=diff
==============================================================================
--- trunk/reactos/lib/drivers/ip/transport/tcp/event.c [iso-8859-1] (original)
+++ trunk/reactos/lib/drivers/ip/transport/tcp/event.c [iso-8859-1] Mon Aug  8 21:28:50 2011
@@ -30,6 +30,8 @@
   "TIME_WAIT"   
 };
 
+extern NPAGED_LOOKASIDE_LIST TdiBucketLookasideList;
+
 static
 VOID
 BucketCompletionWorker(PVOID Context)
@@ -43,7 +45,7 @@
     
     DereferenceObject(Bucket->AssociatedEndpoint);
 
-    ExFreePoolWithTag(Bucket, TDI_BUCKET_TAG);
+    ExFreeToNPagedLookasideList(&TdiBucketLookasideList, Bucket);
 }
 
 VOID

Modified: trunk/reactos/lib/drivers/ip/transport/tcp/tcp.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/drivers/ip/transport/tcp/tcp.c?rev=53143&r1=53142&r2=53143&view=diff
==============================================================================
--- trunk/reactos/lib/drivers/ip/transport/tcp/tcp.c [iso-8859-1] (original)
+++ trunk/reactos/lib/drivers/ip/transport/tcp/tcp.c [iso-8859-1] Mon Aug  8 21:28:50 2011
@@ -23,6 +23,8 @@
 
 #include "rosip.h"
 
+NPAGED_LOOKASIDE_LIST TdiBucketLookasideList;
+
 VOID NTAPI
 DisconnectTimeoutDpc(PKDPC Dpc,
                      PVOID DeferredContext,
@@ -85,8 +87,8 @@
 PCONNECTION_ENDPOINT TCPAllocateConnectionEndpoint( PVOID ClientContext )
 {
     PCONNECTION_ENDPOINT Connection = (PCONNECTION_ENDPOINT)
-        ExAllocatePoolWithTag(NonPagedPool, sizeof(CONNECTION_ENDPOINT),
-                              CONN_ENDPT_TAG);
+        ExAllocatePoolWithTag(NonPagedPool, sizeof(CONNECTION_ENDPOINT), CONN_ENDPT_TAG);
+
     if (!Connection)
         return Connection;
 
@@ -196,6 +198,14 @@
     {
         return Status;
     }
+
+    ExInitializeNPagedLookasideList(&TdiBucketLookasideList,
+                                    NULL,
+                                    NULL,
+                                    0,
+                                    sizeof(TDI_BUCKET),
+                                    TDI_BUCKET_TAG,
+                                    0);
     
     /* Initialize our IP library */
     LibIPInitialize();
@@ -218,6 +228,8 @@
 {
     if (!TCPInitialized)
         return STATUS_SUCCESS;
+
+    ExDeleteNPagedLookasideList(&TdiBucketLookasideList);
     
     LibIPShutdown();
 
@@ -348,7 +360,7 @@
         {
             connaddr.addr = RemoteAddress.Address.IPv4Address;
 
-            Bucket = ExAllocatePoolWithTag( NonPagedPool, sizeof(*Bucket), TDI_BUCKET_TAG );
+            Bucket = ExAllocateFromNPagedLookasideList(&TdiBucketLookasideList);
             if (!Bucket)
             {
                 UnlockObject(Connection, OldIrql);
@@ -418,13 +430,13 @@
                 }
 
                 /* We couldn't complete the request now because we need to wait for outstanding I/O */
-                Bucket = ExAllocatePoolWithTag(NonPagedPool, sizeof(*Bucket), TDI_BUCKET_TAG);
+                Bucket = ExAllocateFromNPagedLookasideList(&TdiBucketLookasideList);
                 if (!Bucket)
                 {
                     UnlockObject(Connection, OldIrql);
                     return STATUS_NO_MEMORY;
                 }
-    
+
                 Bucket->Request.RequestNotifyObject = (PVOID)Complete;
                 Bucket->Request.RequestContext = Context;
 
@@ -485,7 +497,7 @@
 
     if (Status == STATUS_PENDING)
     {
-        Bucket = ExAllocatePoolWithTag(NonPagedPool, sizeof(*Bucket), TDI_BUCKET_TAG);
+        Bucket = ExAllocateFromNPagedLookasideList(&TdiBucketLookasideList);
         if (!Bucket)
         {
             TI_DbgPrint(DEBUG_TCP,("[IP, TCPReceiveData] Failed to allocate bucket\n"));
@@ -544,7 +556,7 @@
     if (Status == STATUS_PENDING)
     {
         /* Freed in TCPSocketState */
-        Bucket = ExAllocatePoolWithTag( NonPagedPool, sizeof(*Bucket), TDI_BUCKET_TAG );
+        Bucket = ExAllocateFromNPagedLookasideList(&TdiBucketLookasideList);
         if (!Bucket)
         {
             UnlockObject(Connection, OldIrql);
@@ -659,7 +671,7 @@
             if( Bucket->Request.RequestContext == Irp )
             {
                 RemoveEntryList( &Bucket->Entry );
-                ExFreePoolWithTag( Bucket, TDI_BUCKET_TAG );
+                ExFreeToNPagedLookasideList(&TdiBucketLookasideList, Bucket);
                 Found = TRUE;
                 break;
             }




More information about the Ros-diffs mailing list