mirror of
https://github.com/reactos/reactos.git
synced 2024-10-28 00:58:20 +00:00
[NTOS]
Some freelist.c fixes, to make it compile svn path=/branches/ros-amd64-bringup/; revision=46532
This commit is contained in:
parent
7aab8a308b
commit
6f805c852b
|
@ -56,6 +56,7 @@ typedef union
|
||||||
|
|
||||||
C_ASSERT(sizeof(PHYSICAL_PAGE) == sizeof(MMPFN));
|
C_ASSERT(sizeof(PHYSICAL_PAGE) == sizeof(MMPFN));
|
||||||
|
|
||||||
|
#define MiInsertInListTail(x, y) MiInsertInListTail(x, (PMMPFN)y)
|
||||||
//#define MiGetPfnEntry(Pfn) ((PPHYSICAL_PAGE)MiGetPfnEntry(Pfn))
|
//#define MiGetPfnEntry(Pfn) ((PPHYSICAL_PAGE)MiGetPfnEntry(Pfn))
|
||||||
#define MiGetPfnEntryIndex(x) MiGetPfnEntryIndex((struct _MMPFN*)x)
|
#define MiGetPfnEntryIndex(x) MiGetPfnEntryIndex((struct _MMPFN*)x)
|
||||||
#define LockCount Flags.LockCount
|
#define LockCount Flags.LockCount
|
||||||
|
@ -797,7 +798,7 @@ MmReferencePage(PFN_NUMBER Pfn)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Page = MiGetPfnEntry(Pfn);
|
Page = (PVOID)MiGetPfnEntry(Pfn);
|
||||||
ASSERT(Page);
|
ASSERT(Page);
|
||||||
|
|
||||||
Page->u3.e2.ReferenceCount++;
|
Page->u3.e2.ReferenceCount++;
|
||||||
|
@ -814,7 +815,7 @@ MmGetReferenceCountPage(PFN_NUMBER Pfn)
|
||||||
DPRINT("MmGetReferenceCountPage(PhysicalAddress %x)\n", Pfn << PAGE_SHIFT);
|
DPRINT("MmGetReferenceCountPage(PhysicalAddress %x)\n", Pfn << PAGE_SHIFT);
|
||||||
|
|
||||||
oldIrql = KeAcquireQueuedSpinLock(LockQueuePfnLock);
|
oldIrql = KeAcquireQueuedSpinLock(LockQueuePfnLock);
|
||||||
Page = MiGetPfnEntry(Pfn);
|
Page = (PVOID)MiGetPfnEntry(Pfn);
|
||||||
ASSERT(Page);
|
ASSERT(Page);
|
||||||
|
|
||||||
RCount = Page->u3.e2.ReferenceCount;
|
RCount = Page->u3.e2.ReferenceCount;
|
||||||
|
@ -846,7 +847,7 @@ MmDereferencePage(PFN_NUMBER Pfn)
|
||||||
|
|
||||||
DPRINT("MmDereferencePage(PhysicalAddress %x)\n", Pfn << PAGE_SHIFT);
|
DPRINT("MmDereferencePage(PhysicalAddress %x)\n", Pfn << PAGE_SHIFT);
|
||||||
|
|
||||||
Page = MiGetPfnEntry(Pfn);
|
Page = (PVOID)MiGetPfnEntry(Pfn);
|
||||||
ASSERT(Page);
|
ASSERT(Page);
|
||||||
|
|
||||||
Page->u3.e2.ReferenceCount--;
|
Page->u3.e2.ReferenceCount--;
|
||||||
|
@ -885,13 +886,13 @@ MmAllocPage(ULONG Type)
|
||||||
DPRINT1("MmAllocPage(): Out of memory\n");
|
DPRINT1("MmAllocPage(): Out of memory\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
PageDescriptor = MiRemoveHeadList(&MmFreePageListHead);
|
PageDescriptor = (PVOID)MiRemoveHeadList(&MmFreePageListHead);
|
||||||
|
|
||||||
NeedClear = TRUE;
|
NeedClear = TRUE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
PageDescriptor = MiRemoveHeadList(&MmZeroedPageListHead);
|
PageDescriptor = (PVOID)MiRemoveHeadList(&MmZeroedPageListHead);
|
||||||
}
|
}
|
||||||
|
|
||||||
PageDescriptor->u3.e2.ReferenceCount = 1;
|
PageDescriptor->u3.e2.ReferenceCount = 1;
|
||||||
|
@ -961,7 +962,7 @@ MmZeroPageThreadMain(PVOID Ignored)
|
||||||
oldIrql = KeAcquireQueuedSpinLock(LockQueuePfnLock);
|
oldIrql = KeAcquireQueuedSpinLock(LockQueuePfnLock);
|
||||||
while (MmFreePageListHead.Total)
|
while (MmFreePageListHead.Total)
|
||||||
{
|
{
|
||||||
PageDescriptor = MiRemoveHeadList(&MmFreePageListHead);
|
PageDescriptor = (PVOID)MiRemoveHeadList(&MmFreePageListHead);
|
||||||
/* We set the page to used, because MmCreateVirtualMapping failed with unused pages */
|
/* We set the page to used, because MmCreateVirtualMapping failed with unused pages */
|
||||||
KeReleaseQueuedSpinLock(LockQueuePfnLock, oldIrql);
|
KeReleaseQueuedSpinLock(LockQueuePfnLock, oldIrql);
|
||||||
Pfn = PageDescriptor - MmPfnDatabase[0];
|
Pfn = PageDescriptor - MmPfnDatabase[0];
|
||||||
|
|
Loading…
Reference in a new issue