mirror of
https://github.com/reactos/reactos.git
synced 2025-04-28 17:38:11 +00:00
[NTOSKRNL] Remove duplicate fields from MEMORY_AREA
svn path=/trunk/; revision=75602
This commit is contained in:
parent
695d9ff51e
commit
7f3f55628a
3 changed files with 12 additions and 18 deletions
|
@ -200,17 +200,13 @@ typedef struct _ROS_SECTION_OBJECT
|
||||||
};
|
};
|
||||||
} ROS_SECTION_OBJECT, *PROS_SECTION_OBJECT;
|
} ROS_SECTION_OBJECT, *PROS_SECTION_OBJECT;
|
||||||
|
|
||||||
#define MA_GetStartingAddress(_MemoryArea) ((_MemoryArea)->StartingVpn << PAGE_SHIFT)
|
#define MA_GetStartingAddress(_MemoryArea) (MemoryArea->VadNode.StartingVpn << PAGE_SHIFT)
|
||||||
#define MA_GetEndingAddress(_MemoryArea) (((_MemoryArea)->EndingVpn + 1) << PAGE_SHIFT)
|
#define MA_GetEndingAddress(_MemoryArea) ((MemoryArea->VadNode.EndingVpn + 1) << PAGE_SHIFT)
|
||||||
|
|
||||||
typedef struct _MEMORY_AREA
|
typedef struct _MEMORY_AREA
|
||||||
{
|
{
|
||||||
MMVAD VadNode;
|
MMVAD VadNode;
|
||||||
ULONG_PTR StartingVpn;
|
|
||||||
ULONG_PTR EndingVpn;
|
|
||||||
struct _MEMORY_AREA *Parent;
|
|
||||||
struct _MEMORY_AREA *LeftChild;
|
|
||||||
struct _MEMORY_AREA *RightChild;
|
|
||||||
ULONG Type;
|
ULONG Type;
|
||||||
ULONG Protect;
|
ULONG Protect;
|
||||||
ULONG Flags;
|
ULONG Flags;
|
||||||
|
|
|
@ -5383,10 +5383,10 @@ NtFreeVirtualMemory(IN HANDLE ProcessHandle,
|
||||||
Vad->u.VadFlags.CommitCharge -= CommitReduction;
|
Vad->u.VadFlags.CommitCharge -= CommitReduction;
|
||||||
// For ReactOS: shrink the corresponding memory area
|
// For ReactOS: shrink the corresponding memory area
|
||||||
MemoryArea = MmLocateMemoryAreaByAddress(AddressSpace, (PVOID)StartingAddress);
|
MemoryArea = MmLocateMemoryAreaByAddress(AddressSpace, (PVOID)StartingAddress);
|
||||||
ASSERT(Vad->StartingVpn == MemoryArea->StartingVpn);
|
ASSERT(Vad->StartingVpn == MemoryArea->VadNode.StartingVpn);
|
||||||
ASSERT(Vad->EndingVpn == MemoryArea->EndingVpn);
|
ASSERT(Vad->EndingVpn == MemoryArea->VadNode.EndingVpn);
|
||||||
Vad->EndingVpn = (StartingAddress - 1) >> PAGE_SHIFT;
|
Vad->EndingVpn = (StartingAddress - 1) >> PAGE_SHIFT;
|
||||||
MemoryArea->EndingVpn = Vad->EndingVpn;
|
MemoryArea->VadNode.EndingVpn = Vad->EndingVpn;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -169,13 +169,11 @@ MmInsertMemoryArea(
|
||||||
{
|
{
|
||||||
PEPROCESS Process = MmGetAddressSpaceOwner(AddressSpace);
|
PEPROCESS Process = MmGetAddressSpaceOwner(AddressSpace);
|
||||||
|
|
||||||
marea->VadNode.StartingVpn = marea->StartingVpn;
|
|
||||||
marea->VadNode.EndingVpn = marea->EndingVpn;
|
|
||||||
marea->VadNode.u.VadFlags.Spare = 1;
|
marea->VadNode.u.VadFlags.Spare = 1;
|
||||||
marea->VadNode.u.VadFlags.Protection = MiMakeProtectionMask(marea->Protect);
|
marea->VadNode.u.VadFlags.Protection = MiMakeProtectionMask(marea->Protect);
|
||||||
|
|
||||||
/* Build a lame VAD if this is a user-space allocation */
|
/* Build a lame VAD if this is a user-space allocation */
|
||||||
if (marea->EndingVpn + 1 < (ULONG_PTR)MmSystemRangeStart >> PAGE_SHIFT)
|
if (marea->VadNode.EndingVpn + 1 < (ULONG_PTR)MmSystemRangeStart >> PAGE_SHIFT)
|
||||||
{
|
{
|
||||||
ASSERT(Process != NULL);
|
ASSERT(Process != NULL);
|
||||||
if (marea->Type != MEMORY_AREA_OWNED_BY_ARM3)
|
if (marea->Type != MEMORY_AREA_OWNED_BY_ARM3)
|
||||||
|
@ -354,7 +352,7 @@ MmFreeMemoryArea(
|
||||||
//if (MemoryArea->VadNode.StartingVpn < (ULONG_PTR)MmSystemRangeStart >> PAGE_SHIFT
|
//if (MemoryArea->VadNode.StartingVpn < (ULONG_PTR)MmSystemRangeStart >> PAGE_SHIFT
|
||||||
if (MemoryArea->Vad)
|
if (MemoryArea->Vad)
|
||||||
{
|
{
|
||||||
ASSERT(MemoryArea->EndingVpn + 1 < (ULONG_PTR)MmSystemRangeStart >> PAGE_SHIFT);
|
ASSERT(MemoryArea->VadNode.EndingVpn + 1 < (ULONG_PTR)MmSystemRangeStart >> PAGE_SHIFT);
|
||||||
ASSERT(MemoryArea->Type == MEMORY_AREA_SECTION_VIEW || MemoryArea->Type == MEMORY_AREA_CACHE);
|
ASSERT(MemoryArea->Type == MEMORY_AREA_SECTION_VIEW || MemoryArea->Type == MEMORY_AREA_CACHE);
|
||||||
|
|
||||||
/* MmCleanProcessAddressSpace might have removed it (and this would be MmDeleteProcessAdressSpace) */
|
/* MmCleanProcessAddressSpace might have removed it (and this would be MmDeleteProcessAdressSpace) */
|
||||||
|
@ -470,8 +468,8 @@ MmCreateMemoryArea(PMMSUPPORT AddressSpace,
|
||||||
return STATUS_NO_MEMORY;
|
return STATUS_NO_MEMORY;
|
||||||
}
|
}
|
||||||
|
|
||||||
MemoryArea->StartingVpn = (ULONG_PTR)*BaseAddress >> PAGE_SHIFT;
|
MemoryArea->VadNode.StartingVpn = (ULONG_PTR)*BaseAddress >> PAGE_SHIFT;
|
||||||
MemoryArea->EndingVpn = ((ULONG_PTR)*BaseAddress + tmpLength - 1) >> PAGE_SHIFT;
|
MemoryArea->VadNode.EndingVpn = ((ULONG_PTR)*BaseAddress + tmpLength - 1) >> PAGE_SHIFT;
|
||||||
MmInsertMemoryArea(AddressSpace, MemoryArea);
|
MmInsertMemoryArea(AddressSpace, MemoryArea);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -508,8 +506,8 @@ MmCreateMemoryArea(PMMSUPPORT AddressSpace,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MemoryArea->StartingVpn = (ULONG_PTR)*BaseAddress >> PAGE_SHIFT;
|
MemoryArea->VadNode.StartingVpn = (ULONG_PTR)*BaseAddress >> PAGE_SHIFT;
|
||||||
MemoryArea->EndingVpn = ((ULONG_PTR)*BaseAddress + tmpLength - 1) >> PAGE_SHIFT;
|
MemoryArea->VadNode.EndingVpn = ((ULONG_PTR)*BaseAddress + tmpLength - 1) >> PAGE_SHIFT;
|
||||||
MmInsertMemoryArea(AddressSpace, MemoryArea);
|
MmInsertMemoryArea(AddressSpace, MemoryArea);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue