mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 19:12:57 +00:00
Used lookasidelists for pageop's.
svn path=/trunk/; revision=3971
This commit is contained in:
parent
e177cc849d
commit
ac22af2d68
3 changed files with 28 additions and 12 deletions
|
@ -410,7 +410,11 @@ MmReleasePageOp(PMM_PAGEOP PageOp);
|
||||||
PMM_PAGEOP
|
PMM_PAGEOP
|
||||||
MmGetPageOp(PMEMORY_AREA MArea, ULONG Pid, PVOID Address,
|
MmGetPageOp(PMEMORY_AREA MArea, ULONG Pid, PVOID Address,
|
||||||
PMM_SECTION_SEGMENT Segment, ULONG Offset, ULONG OpType);
|
PMM_SECTION_SEGMENT Segment, ULONG Offset, ULONG OpType);
|
||||||
|
PMM_PAGEOP
|
||||||
|
MmCheckForPageOp(PMEMORY_AREA MArea, ULONG Pid, PVOID Address,
|
||||||
|
PMM_SECTION_SEGMENT Segment, ULONG Offset);
|
||||||
|
VOID
|
||||||
|
MmInitializePageOp(VOID);
|
||||||
VOID
|
VOID
|
||||||
MiDebugDumpNonPagedPool(BOOLEAN NewOnly);
|
MiDebugDumpNonPagedPool(BOOLEAN NewOnly);
|
||||||
VOID
|
VOID
|
||||||
|
@ -523,9 +527,6 @@ VOID MmSetDirtyPage(PEPROCESS Process, PVOID Address);
|
||||||
VOID
|
VOID
|
||||||
MmInitializeMdlImplementation(VOID);
|
MmInitializeMdlImplementation(VOID);
|
||||||
extern PHYSICAL_ADDRESS MmSharedDataPagePhysicalAddress;
|
extern PHYSICAL_ADDRESS MmSharedDataPagePhysicalAddress;
|
||||||
PMM_PAGEOP
|
|
||||||
MmCheckForPageOp(PMEMORY_AREA MArea, ULONG Pid, PVOID Address,
|
|
||||||
PMM_SECTION_SEGMENT Segment, ULONG Offset);
|
|
||||||
struct _KTRAP_FRAME;
|
struct _KTRAP_FRAME;
|
||||||
NTSTATUS STDCALL
|
NTSTATUS STDCALL
|
||||||
MmDumpToPagingFile(ULONG BugCode,
|
MmDumpToPagingFile(ULONG BugCode,
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: mminit.c,v 1.42 2002/12/16 22:59:44 hbirr Exp $
|
/* $Id: mminit.c,v 1.43 2003/01/11 15:26:59 hbirr Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top directory
|
* COPYRIGHT: See COPYING in the top directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -364,6 +364,7 @@ VOID MmInit3(VOID)
|
||||||
MmInitPagerThread();
|
MmInitPagerThread();
|
||||||
MmCreatePhysicalMemorySection();
|
MmCreatePhysicalMemorySection();
|
||||||
MmInitializeRmapList();
|
MmInitializeRmapList();
|
||||||
|
MmInitializePageOp();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initialise the modified page writer.
|
* Initialise the modified page writer.
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: pageop.c,v 1.14 2002/10/01 19:27:24 chorns Exp $
|
/* $Id: pageop.c,v 1.15 2003/01/11 15:26:59 hbirr Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -22,8 +22,9 @@
|
||||||
|
|
||||||
#define PAGEOP_HASH_TABLE_SIZE (32)
|
#define PAGEOP_HASH_TABLE_SIZE (32)
|
||||||
|
|
||||||
KSPIN_LOCK MmPageOpHashTableLock;
|
static KSPIN_LOCK MmPageOpHashTableLock;
|
||||||
PMM_PAGEOP MmPageOpHashTable[PAGEOP_HASH_TABLE_SIZE] = {NULL, } ;
|
static PMM_PAGEOP MmPageOpHashTable[PAGEOP_HASH_TABLE_SIZE];
|
||||||
|
static NPAGED_LOOKASIDE_LIST MmPageOpLookasideList;
|
||||||
|
|
||||||
#define TAG_MM_PAGEOP TAG('M', 'P', 'O', 'P')
|
#define TAG_MM_PAGEOP TAG('M', 'P', 'O', 'P')
|
||||||
|
|
||||||
|
@ -51,7 +52,7 @@ MmReleasePageOp(PMM_PAGEOP PageOp)
|
||||||
{
|
{
|
||||||
MmPageOpHashTable[PageOp->Hash] = PageOp->Next;
|
MmPageOpHashTable[PageOp->Hash] = PageOp->Next;
|
||||||
KeReleaseSpinLock(&MmPageOpHashTableLock, oldIrql);
|
KeReleaseSpinLock(&MmPageOpHashTableLock, oldIrql);
|
||||||
ExFreePool(PageOp);
|
ExFreeToNPagedLookasideList(&MmPageOpLookasideList, PageOp);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
while (PrevPageOp->Next != NULL)
|
while (PrevPageOp->Next != NULL)
|
||||||
|
@ -60,7 +61,7 @@ MmReleasePageOp(PMM_PAGEOP PageOp)
|
||||||
{
|
{
|
||||||
PrevPageOp->Next = PageOp->Next;
|
PrevPageOp->Next = PageOp->Next;
|
||||||
KeReleaseSpinLock(&MmPageOpHashTableLock, oldIrql);
|
KeReleaseSpinLock(&MmPageOpHashTableLock, oldIrql);
|
||||||
ExFreePool(PageOp);
|
ExFreeToNPagedLookasideList(&MmPageOpLookasideList, PageOp);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
PrevPageOp = PrevPageOp->Next;
|
PrevPageOp = PrevPageOp->Next;
|
||||||
|
@ -198,8 +199,7 @@ MmGetPageOp(PMEMORY_AREA MArea, ULONG Pid, PVOID Address,
|
||||||
/*
|
/*
|
||||||
* Otherwise add a new pageop.
|
* Otherwise add a new pageop.
|
||||||
*/
|
*/
|
||||||
PageOp = ExAllocatePoolWithTag(NonPagedPool, sizeof(MM_PAGEOP),
|
PageOp = ExAllocateFromNPagedLookasideList(&MmPageOpLookasideList);
|
||||||
TAG_MM_PAGEOP);
|
|
||||||
if (PageOp == NULL)
|
if (PageOp == NULL)
|
||||||
{
|
{
|
||||||
KeReleaseSpinLock(&MmPageOpHashTableLock, oldIrql);
|
KeReleaseSpinLock(&MmPageOpHashTableLock, oldIrql);
|
||||||
|
@ -232,6 +232,20 @@ MmGetPageOp(PMEMORY_AREA MArea, ULONG Pid, PVOID Address,
|
||||||
return(PageOp);
|
return(PageOp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
VOID
|
||||||
|
MmInitializePageOp(VOID)
|
||||||
|
{
|
||||||
|
memset(MmPageOpHashTable, 0, sizeof(MmPageOpHashTable));
|
||||||
|
KeInitializeSpinLock(&MmPageOpHashTableLock);
|
||||||
|
|
||||||
|
ExInitializeNPagedLookasideList (&MmPageOpLookasideList,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
0,
|
||||||
|
sizeof(MM_PAGEOP),
|
||||||
|
TAG_MM_PAGEOP,
|
||||||
|
50);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue