https://git.reactos.org/?p=reactos.git;a=commitdiff;h=b445005c7086ef76a0acef...
commit b445005c7086ef76a0acefc022878d47ada1487c Author: Jérôme Gardou jerome.gardou@reactos.org AuthorDate: Wed Mar 10 15:24:31 2021 +0100 Commit: Jérôme Gardou zefklop@users.noreply.github.com CommitDate: Thu Apr 8 15:40:37 2021 +0200
[NTOS:MM] Get rid of MmRosFlushVirtualMemory
It's not used anywhere now, and it will eventually be gone --- ntoskrnl/include/internal/mm.h | 8 ----- ntoskrnl/mm/ARM3/virtual.c | 6 ++-- ntoskrnl/mm/section.c | 75 ------------------------------------------ 3 files changed, 4 insertions(+), 85 deletions(-)
diff --git a/ntoskrnl/include/internal/mm.h b/ntoskrnl/include/internal/mm.h index f5dd0a4e049..93c44e5bd05 100644 --- a/ntoskrnl/include/internal/mm.h +++ b/ntoskrnl/include/internal/mm.h @@ -1402,14 +1402,6 @@ MmMakePagesDirty( _In_ PVOID Address, _In_ ULONG Length);
-NTSTATUS -NTAPI -MmRosFlushVirtualMemory( - _In_ PEPROCESS Process, - _Inout_ PVOID* Address, - _Inout_ PSIZE_T Length, - _Out_ PIO_STATUS_BLOCK Iosb); - NTSTATUS NTAPI MmFlushSegment( diff --git a/ntoskrnl/mm/ARM3/virtual.c b/ntoskrnl/mm/ARM3/virtual.c index 986b345e6c6..eb03fa15e75 100644 --- a/ntoskrnl/mm/ARM3/virtual.c +++ b/ntoskrnl/mm/ARM3/virtual.c @@ -1356,8 +1356,10 @@ MmFlushVirtualMemory(IN PEPROCESS Process, OUT PIO_STATUS_BLOCK IoStatusBlock) { PAGED_CODE(); - /* For now we call the old Mm */ - return MmRosFlushVirtualMemory(Process, BaseAddress, RegionSize, IoStatusBlock); + + UNIMPLEMENTED; + + return STATUS_NOT_IMPLEMENTED; }
ULONG diff --git a/ntoskrnl/mm/section.c b/ntoskrnl/mm/section.c index 5df50f191ef..2485d5bb5f5 100644 --- a/ntoskrnl/mm/section.c +++ b/ntoskrnl/mm/section.c @@ -4534,81 +4534,6 @@ MmArePagesResident( return Ret; }
-NTSTATUS -NTAPI -MmRosFlushVirtualMemory( - _In_ PEPROCESS Process, - _Inout_ PVOID* Address, - _Inout_ PSIZE_T Length, - _Out_ PIO_STATUS_BLOCK Iosb) -{ - PMEMORY_AREA MemoryArea; - PMM_SECTION_SEGMENT Segment; - LARGE_INTEGER SegmentOffset, RangeEnd; - PMMSUPPORT AddressSpace = Process ? &Process->Vm : MmGetKernelAddressSpace(); - PVOID CurrentAddress; - - PAGED_CODE(); - - MmLockAddressSpace(AddressSpace); - - DPRINT("Flushing Process %p at %p --> 0x%x", Process, *Address, *Length); - - MemoryArea = MmLocateMemoryAreaByAddress(AddressSpace, *Address); - if ((MemoryArea == NULL) || (MemoryArea->Type != MEMORY_AREA_SECTION_VIEW) || - (MemoryArea->VadNode.u.VadFlags.VadType == VadImageMap)) - { - DPRINT1("Unable to find memory area at address %p.\n", Address); - MmUnlockAddressSpace(AddressSpace); - return STATUS_NOT_MAPPED_VIEW; - } - - Segment = MemoryArea->SectionData.Segment; - - SegmentOffset.QuadPart = PAGE_ROUND_DOWN(*Address) - MA_GetStartingAddress(MemoryArea) - + MemoryArea->SectionData.ViewOffset; - RangeEnd.QuadPart = PAGE_ROUND_UP((ULONG_PTR)*Address + *Length) - MA_GetStartingAddress(MemoryArea) - + MemoryArea->SectionData.ViewOffset; - - CurrentAddress = *Address; - - MmUnlockAddressSpace(AddressSpace); - - MmLockSectionSegment(Segment); - - Iosb->Information = 0; - while (SegmentOffset.QuadPart < RangeEnd.QuadPart) - { - ULONG_PTR Entry = MmGetPageEntrySectionSegment(Segment, &SegmentOffset); - - /* Let any pending read proceed */ - while (MM_IS_WAIT_PTE(Entry)) - { - MmUnlockSectionSegment(Segment); - YieldProcessor(); - MmLockSectionSegment(Segment); - Entry = MmGetPageEntrySectionSegment(Segment, &SegmentOffset); - } - - /* We are called from Cc, this can't be backed by the page files */ - ASSERT(!IS_SWAP_FROM_SSE(Entry)); - - /* At this point, there may be a valid page there */ - if (Entry != 0) - { - /* This will write the page to disk, if needed */ - MmCheckDirtySegment(Segment, &SegmentOffset, Process ? MmIsDirtyPage(Process, CurrentAddress) : FALSE, FALSE); - Iosb->Information += PAGE_SIZE; - } - SegmentOffset.QuadPart += PAGE_SIZE; - CurrentAddress = (PVOID)((ULONG_PTR)CurrentAddress + PAGE_SIZE); - } - - MmUnlockSectionSegment(Segment); - - return STATUS_SUCCESS; -} - /* Like CcPurgeCache but for the in-memory segment */ BOOLEAN NTAPI