[ros-diffs] [gvg] 20535: Use a lookaside list for tracking

gvg at svn.reactos.org gvg at svn.reactos.org
Mon Jan 2 21:04:42 CET 2006


Use a lookaside list for tracking
Modified: trunk/reactos/drivers/lib/ip/network/memtrack.c
  _____  

Modified: trunk/reactos/drivers/lib/ip/network/memtrack.c
--- trunk/reactos/drivers/lib/ip/network/memtrack.c	2006-01-02
19:00:47 UTC (rev 20534)
+++ trunk/reactos/drivers/lib/ip/network/memtrack.c	2006-01-02
20:04:19 UTC (rev 20535)
@@ -3,8 +3,11 @@

 
 #ifdef MEMTRACK
 
-LIST_ENTRY AllocatedObjectsList;
-KSPIN_LOCK AllocatedObjectsLock;
+#define TRACK_TAG TAG('T','r','C','K')
+
+static LIST_ENTRY AllocatedObjectsList;
+static KSPIN_LOCK AllocatedObjectsLock;
+static NPAGED_LOOKASIDE_LIST AllocatedObjectsLookasideList;
 DWORD TagsToShow[MEMTRACK_MAX_TAGS_TO_TRACK] = { 0 };
 
 VOID TrackTag( DWORD Tag ) {
@@ -17,6 +20,13 @@
 VOID TrackingInit() {
     TcpipInitializeSpinLock( &AllocatedObjectsLock );
     InitializeListHead( &AllocatedObjectsList );
+    ExInitializeNPagedLookasideList(&AllocatedObjectsLookasideList,
+                                   NULL,
+                                   NULL,
+                                   0,
+                                   sizeof(ALLOCATION_TRACKER),
+                                   TRACK_TAG,
+                                   0 );
 }
 
 VOID ShowTrackedThing( PCHAR What, PALLOCATION_TRACKER Thing,
@@ -50,7 +60,7 @@
 
 VOID TrackWithTag( DWORD Tag, PVOID Thing, PCHAR FileName, DWORD LineNo
) {
     PALLOCATION_TRACKER TrackedThing =
-	PoolAllocateBuffer( sizeof(*TrackedThing) );
+        ExAllocateFromNPagedLookasideList(
&AllocatedObjectsLookasideList );
 
     KIRQL OldIrql;
     PLIST_ENTRY Entry;
@@ -80,7 +90,7 @@
 	TrackedThing->LineNo   = LineNo;
 
 
-	InsertTailList( &AllocatedObjectsList, &TrackedThing->Entry );
+	InsertHeadList( &AllocatedObjectsList, &TrackedThing->Entry );
 	ShowTrackedThing( "Alloc", TrackedThing, FileName, LineNo );
     }
 
@@ -111,7 +121,9 @@
 
 	    ShowTrackedThing( "Free ", ThingInList, File, Line );
 
-	    PoolFreeBuffer( ThingInList );
+	    ExFreeToNPagedLookasideList( &AllocatedObjectsLookasideList,
+	                                ThingInList );
+ 
 	    TcpipReleaseSpinLock( &AllocatedObjectsLock, OldIrql );
 	    /* TrackDumpFL( File, Line ); */
 	    return;
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.reactos.org/pipermail/ros-diffs/attachments/20060102/5c61a8ea/attachment.html


More information about the Ros-diffs mailing list