From 4e9be483ade58cfa9f7b666da95cc348c596244b Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Mon, 5 Mar 2012 17:08:02 +0000 Subject: [PATCH] [NTOSKRNL] - Use ARM3 hyperspace mapping calls instead of the legacy RosMm API svn path=/trunk/; revision=56038 --- reactos/ntoskrnl/cache/section/io.c | 11 +++++++---- reactos/ntoskrnl/cache/section/reqtools.c | 11 +++++++---- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/reactos/ntoskrnl/cache/section/io.c b/reactos/ntoskrnl/cache/section/io.c index c1f3e36928b..09384470af4 100644 --- a/reactos/ntoskrnl/cache/section/io.c +++ b/reactos/ntoskrnl/cache/section/io.c @@ -290,11 +290,14 @@ _MiWriteBackPage if (!PageBuffer) return STATUS_NO_MEMORY; - KeRaiseIrql(DISPATCH_LEVEL, &OldIrql); - Hyperspace = MmCreateHyperspaceMapping(Page); + Hyperspace = MiMapPageInHyperSpace(PsGetCurrentProcess(), Page, &OldIrql); + if (!Hyperspace) + { + ExFreePool(PageBuffer); + return STATUS_NO_MEMORY; + } RtlCopyMemory(PageBuffer, Hyperspace, PAGE_SIZE); - MmDeleteHyperspaceMapping(Hyperspace); - KeLowerIrql(OldIrql); + MiUnmapPageInHyperSpace(PsGetCurrentProcess(), Hyperspace, OldIrql); DPRINT("MiWriteBackPage(%wZ,%08x%08x,%s:%d)\n", &FileObject->FileName, FileOffset->u.HighPart, FileOffset->u.LowPart, File, Line); Status = MiSimpleWrite diff --git a/reactos/ntoskrnl/cache/section/reqtools.c b/reactos/ntoskrnl/cache/section/reqtools.c index 2abc8fa13cd..6f77f21e520 100644 --- a/reactos/ntoskrnl/cache/section/reqtools.c +++ b/reactos/ntoskrnl/cache/section/reqtools.c @@ -135,13 +135,16 @@ MiReadFilePage MmUnmapLockedPages (Mdl->MappedSystemVa, Mdl); } - OldIrql = KfRaiseIrql(DISPATCH_LEVEL); - PageBuf = MmCreateHyperspaceMapping(*Page); + PageBuf = MiMapPageInHyperSpace(PsGetCurrentProcess(), *Page, &OldIrql); + if (!PageBuf) + { + MmReleasePageMemoryConsumer(RequiredResources->Consumer, *Page); + return STATUS_NO_MEMORY; + } RtlZeroMemory ((PCHAR)PageBuf+RequiredResources->Amount, PAGE_SIZE-RequiredResources->Amount); - MmDeleteHyperspaceMapping(PageBuf); - KfLowerIrql(OldIrql); + MiUnmapPageInHyperSpace(PsGetCurrentProcess(), PageBuf, OldIrql); DPRINT("Read Status %x (Page %x)\n", Status, *Page);