- Bring back old paged pool allocator and use it for paged pool, until ARM3 pool issues are solved.

- Should fix recent regressions.


svn path=/trunk/; revision=44904
This commit is contained in:
ReactOS Portable Systems Group 2010-01-03 05:24:30 +00:00
parent 342f38623c
commit 8113195f32
4 changed files with 1072 additions and 3 deletions

View file

@ -193,6 +193,11 @@ ExAllocatePoolWithTag(IN POOL_TYPE PoolType,
KIRQL OldIrql;
ULONG BlockSize, i;
//
// Check for paged pool
//
if (PoolType == PagedPool) return ExAllocatePagedPoolWithTag(PagedPool, NumberOfBytes, Tag);
//
// Some sanity checks
//
@ -481,6 +486,19 @@ ExFreePoolWithTag(IN PVOID P,
PPOOL_DESCRIPTOR PoolDesc;
BOOLEAN Combined = FALSE;
//
// Check for paged pool
//
if ((P >= MmPagedPoolBase) &&
(P <= (PVOID)((ULONG_PTR)MmPagedPoolBase + MmPagedPoolSize)))
{
//
// Use old allocator
//
ExFreePagedPool(P);
return;
}
//
// Quickly deal with big page allocations
//

View file

@ -198,6 +198,21 @@ MiInitSystemMemoryAreas()
BoundaryAddressMultiple);
ASSERT(Status == STATUS_SUCCESS);
//
// And now, ReactOS paged pool
//
BaseAddress = MmPagedPoolBase;
Status = MmCreateMemoryArea(MmGetKernelAddressSpace(),
MEMORY_AREA_PAGED_POOL | MEMORY_AREA_STATIC,
&BaseAddress,
MmPagedPoolSize,
PAGE_READWRITE,
&MArea,
TRUE,
0,
BoundaryAddressMultiple);
ASSERT(Status == STATUS_SUCCESS);
//
// Next, the KPCR
//
@ -272,6 +287,10 @@ MiDbgDumpAddressSpace(VOID)
MmSystemRangeStart,
(ULONG_PTR)MmSystemRangeStart + MmBootImageSize,
"Boot Loaded Image");
DPRINT1(" 0x%p - 0x%p\t%s\n",
MmPagedPoolBase,
(ULONG_PTR)MmPagedPoolBase + MmPagedPoolSize,
"Paged Pool");
DPRINT1(" 0x%p - 0x%p\t%s\n",
MmPfnDatabase,
(ULONG_PTR)MmPfnDatabase + (MxPfnAllocation << PAGE_SHIFT),
@ -371,12 +390,20 @@ MmInitSystem(IN ULONG Phase,
MiDbgReadyForPhysical = TRUE;
#endif
/* Put the paged pool after the loaded modules */
MmPagedPoolBase = (PVOID)PAGE_ROUND_UP((ULONG_PTR)MmSystemRangeStart +
MmBootImageSize);
MmPagedPoolSize = MM_PAGED_POOL_SIZE;
/* Intialize system memory areas */
MiInitSystemMemoryAreas();
/* Dump the address space */
MiDbgDumpAddressSpace();
/* Initialize paged pool */
MmInitializePagedPool();
/* Initialize working sets */
MmInitializeMemoryConsumer(MC_USER, MmTrimUserMemory);

1023
reactos/ntoskrnl/mm/ppool.c Normal file

File diff suppressed because it is too large Load diff

View file

@ -414,6 +414,7 @@
<file>pagefile.c</file>
<file>pageop.c</file>
<file>pe.c</file>
<file>ppool.c</file>
<file>procsup.c</file>
<file>region.c</file>
<file>rmap.c</file>