diff --git a/reactos/ntoskrnl/cache/copysup.c b/reactos/ntoskrnl/cache/copysup.c index 1cc61ee9a91..b5e77133b6d 100644 --- a/reactos/ntoskrnl/cache/copysup.c +++ b/reactos/ntoskrnl/cache/copysup.c @@ -11,7 +11,7 @@ #include #include "newcc.h" #include "section/newmm.h" -//#define NDEBUG +#define NDEBUG #include /* GLOBALS ********************************************************************/ diff --git a/reactos/ntoskrnl/cache/mdlsup.c b/reactos/ntoskrnl/cache/mdlsup.c index 8f006025777..79a1c5aeec4 100644 --- a/reactos/ntoskrnl/cache/mdlsup.c +++ b/reactos/ntoskrnl/cache/mdlsup.c @@ -10,7 +10,7 @@ #include #include "newcc.h" -//#define NDEBUG +#define NDEBUG #include /* GLOBALS ********************************************************************/ @@ -95,7 +95,7 @@ NTAPI CcMdlReadComplete2(IN PMDL MdlChain, IN PFILE_OBJECT FileObject) { - DPRINT("Not sure\n"); + UNIMPLEMENTED } VOID @@ -128,7 +128,7 @@ CcMdlWriteComplete2(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN PMDL MdlChain) { - DPRINT("Not sure\n"); + UNIMPLEMENTED } VOID diff --git a/reactos/ntoskrnl/cache/pinsup.c b/reactos/ntoskrnl/cache/pinsup.c index b32696f79ee..d25354d4b95 100644 --- a/reactos/ntoskrnl/cache/pinsup.c +++ b/reactos/ntoskrnl/cache/pinsup.c @@ -230,7 +230,7 @@ ULONG CcpAllocateCacheSections if (!RtlTestBit(CcCacheBitmap, i)) { - DPRINT("Somebody stoeled BCB #%x\n", i); + DPRINT1("Somebody stoeled BCB #%x\n", i); } ASSERT(RtlTestBit(CcCacheBitmap, i)); @@ -239,7 +239,7 @@ ULONG CcpAllocateCacheSections } else { - DPRINT("Failed to allocate cache segment\n"); + DPRINT1("Failed to allocate cache segment\n"); } return i; } diff --git a/reactos/ntoskrnl/cache/section/swapout.c b/reactos/ntoskrnl/cache/section/swapout.c index 7fae9b835be..e298a75e767 100644 --- a/reactos/ntoskrnl/cache/section/swapout.c +++ b/reactos/ntoskrnl/cache/section/swapout.c @@ -328,12 +328,7 @@ MmpPageOutPhysicalAddress(PFN_NUMBER Page) KeBugCheck(MEMORY_MANAGEMENT); } - if (!MmTryToLockAddressSpace(AddressSpace)) - { - DPRINT1("Could not lock address space for process %x\n", MmGetAddressSpaceOwner(AddressSpace)); - Status = STATUS_UNSUCCESSFUL; - goto bail; - } + MmLockAddressSpace(AddressSpace); do { @@ -495,12 +490,14 @@ MiRosTrimCache(ULONG Target, ULONG Priority, PULONG NrFreed) PMM_SECTION_SEGMENT Segment; *NrFreed = 0; + DPRINT1("Need to trim %d cache pages\n", Target); for (Entry = MiSegmentList.Flink; *NrFreed < Target && Entry != &MiSegmentList; Entry = Entry->Flink) { Segment = CONTAINING_RECORD(Entry, MM_SECTION_SEGMENT, ListOfSegments); // Defer to MM to try recovering pages from it Freed = MiCacheEvictPages(Segment, Target); *NrFreed += Freed; } + DPRINT1("Evicted %d cache pages\n", Target); if (!IsListEmpty(&MiSegmentList)) { Entry = MiSegmentList.Flink; diff --git a/reactos/ntoskrnl/mm/rmap.c b/reactos/ntoskrnl/mm/rmap.c index fc295b810e4..5295238dbf1 100644 --- a/reactos/ntoskrnl/mm/rmap.c +++ b/reactos/ntoskrnl/mm/rmap.c @@ -63,7 +63,11 @@ MmPageOutPhysicalAddress(PFN_NUMBER Page) // Special case for NEWCC: we can have a page that's only in a segment // page table if (entry && RMAP_IS_SEGMENT(entry->Address) && entry->Next == NULL) + { + /* NEWCC does locking itself */ + ExReleaseFastMutex(&RmapListLock); return MmpPageOutPhysicalAddress(Page); + } #endif while (entry && RMAP_IS_SEGMENT(entry->Address)) @@ -155,11 +159,14 @@ MmPageOutPhysicalAddress(PFN_NUMBER Page) } else if (Type == MEMORY_AREA_CACHE) { - Status = MmpPageOutPhysicalAddress(Page); + /* NEWCC does locking itself */ + MmUnlockAddressSpace(AddressSpace); + Status = MmpPageOutPhysicalAddress(Page); } else if (Type == MEMORY_AREA_VIRTUAL_MEMORY) { /* Do not page out virtual memory during ARM3 transition */ + MmUnlockAddressSpace(AddressSpace); Status = STATUS_SUCCESS; } else diff --git a/reactos/ntoskrnl/mm/section.c b/reactos/ntoskrnl/mm/section.c index e680ee4dbd6..4c418796145 100644 --- a/reactos/ntoskrnl/mm/section.c +++ b/reactos/ntoskrnl/mm/section.c @@ -1218,7 +1218,7 @@ MiReadPage(PMEMORY_AREA MemoryArea, Resources.Consumer = MC_USER; Resources.Amount = PAGE_SIZE; - DPRINT1("%S, offset %x, len %d, page %x\n", ((PFILE_OBJECT)Resources.Context)->FileName.Buffer, Resources.FileOffset.LowPart, Resources.Amount, Resources.Page[0]); + DPRINT("%S, offset 0x%x, len 0x%x, page 0x%x\n", ((PFILE_OBJECT)Resources.Context)->FileName.Buffer, Resources.FileOffset.LowPart, Resources.Amount, Resources.Page[0]); Status = MiReadFilePage(MmGetKernelAddressSpace(), MemoryArea, &Resources); *Page = Resources.Page[0];