Abstract PTE list terminator into paging layer
This commit is contained in:
@@ -42,6 +42,7 @@ namespace MM
|
|||||||
XTAPI PMMPTE GetPteAddress(IN PVOID Address);
|
XTAPI PMMPTE GetPteAddress(IN PVOID Address);
|
||||||
XTAPI LONG GetPteDistance(PMMPTE EndPte,
|
XTAPI LONG GetPteDistance(PMMPTE EndPte,
|
||||||
PMMPTE StartPte);
|
PMMPTE StartPte);
|
||||||
|
XTAPI ULONG_PTR GetPteListTerminator(VOID);
|
||||||
XTAPI ULONG GetPteOffset(IN PVOID Address);
|
XTAPI ULONG GetPteOffset(IN PVOID Address);
|
||||||
XTAPI ULONG GetPteSize(VOID);
|
XTAPI ULONG GetPteSize(VOID);
|
||||||
XTAPI ULONG GetPteSoftwareProtection(IN PMMPTE PtePointer);
|
XTAPI ULONG GetPteSoftwareProtection(IN PMMPTE PtePointer);
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ namespace MM
|
|||||||
STATIC XTAPI PMMPTE GetPteAddress(IN PVOID Address);
|
STATIC XTAPI PMMPTE GetPteAddress(IN PVOID Address);
|
||||||
STATIC XTAPI LONG GetPteDistance(PMMPTE EndPte,
|
STATIC XTAPI LONG GetPteDistance(PMMPTE EndPte,
|
||||||
PMMPTE StartPte);
|
PMMPTE StartPte);
|
||||||
|
STATIC XTAPI ULONG_PTR GetPteListTerminator(VOID);
|
||||||
STATIC XTAPI ULONG GetPteSize(VOID);
|
STATIC XTAPI ULONG GetPteSize(VOID);
|
||||||
STATIC XTAPI ULONG GetPteSoftwareProtection(IN PMMPTE PtePointer);
|
STATIC XTAPI ULONG GetPteSoftwareProtection(IN PMMPTE PtePointer);
|
||||||
STATIC XTAPI ULONG GetPteSoftwarePrototype(IN PMMPTE PtePointer);
|
STATIC XTAPI ULONG GetPteSoftwarePrototype(IN PMMPTE PtePointer);
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ namespace MM
|
|||||||
XTAPI ULONG GetPteOffset(IN PVOID Address);
|
XTAPI ULONG GetPteOffset(IN PVOID Address);
|
||||||
VIRTUAL XTAPI LONG GetPteDistance(PMMPTE EndPte,
|
VIRTUAL XTAPI LONG GetPteDistance(PMMPTE EndPte,
|
||||||
PMMPTE StartPte) = 0;
|
PMMPTE StartPte) = 0;
|
||||||
|
VIRTUAL XTAPI ULONG_PTR GetPteListTerminator(VOID) = 0;
|
||||||
VIRTUAL XTAPI ULONG GetPteSize(VOID) = 0;
|
VIRTUAL XTAPI ULONG GetPteSize(VOID) = 0;
|
||||||
VIRTUAL XTAPI ULONG GetPteSoftwareProtection(IN PMMPTE PtePointer) = 0;
|
VIRTUAL XTAPI ULONG GetPteSoftwareProtection(IN PMMPTE PtePointer) = 0;
|
||||||
VIRTUAL XTAPI ULONG GetPteSoftwarePrototype(IN PMMPTE PtePointer) = 0;
|
VIRTUAL XTAPI ULONG GetPteSoftwarePrototype(IN PMMPTE PtePointer) = 0;
|
||||||
@@ -81,6 +82,7 @@ namespace MM
|
|||||||
XTAPI ULONG_PTR GetPte(IN PMMPTE PtePointer);
|
XTAPI ULONG_PTR GetPte(IN PMMPTE PtePointer);
|
||||||
XTAPI LONG GetPteDistance(PMMPTE EndPte,
|
XTAPI LONG GetPteDistance(PMMPTE EndPte,
|
||||||
PMMPTE StartPte);
|
PMMPTE StartPte);
|
||||||
|
XTAPI ULONG_PTR GetPteListTerminator(VOID);
|
||||||
XTAPI ULONG GetPteSize(VOID);
|
XTAPI ULONG GetPteSize(VOID);
|
||||||
XTAPI ULONG GetPteSoftwareProtection(IN PMMPTE PtePointer);
|
XTAPI ULONG GetPteSoftwareProtection(IN PMMPTE PtePointer);
|
||||||
XTAPI ULONG GetPteSoftwarePrototype(IN PMMPTE PtePointer);
|
XTAPI ULONG GetPteSoftwarePrototype(IN PMMPTE PtePointer);
|
||||||
@@ -120,6 +122,7 @@ namespace MM
|
|||||||
XTAPI ULONG_PTR GetPte(IN PMMPTE PtePointer);
|
XTAPI ULONG_PTR GetPte(IN PMMPTE PtePointer);
|
||||||
XTAPI LONG GetPteDistance(PMMPTE EndPte,
|
XTAPI LONG GetPteDistance(PMMPTE EndPte,
|
||||||
PMMPTE StartPte);
|
PMMPTE StartPte);
|
||||||
|
XTAPI ULONG_PTR GetPteListTerminator(VOID);
|
||||||
XTAPI ULONG GetPteSize(VOID);
|
XTAPI ULONG GetPteSize(VOID);
|
||||||
XTAPI ULONG GetPteSoftwareProtection(IN PMMPTE PtePointer);
|
XTAPI ULONG GetPteSoftwareProtection(IN PMMPTE PtePointer);
|
||||||
XTAPI ULONG GetPteSoftwarePrototype(IN PMMPTE PtePointer);
|
XTAPI ULONG GetPteSoftwarePrototype(IN PMMPTE PtePointer);
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ namespace MM
|
|||||||
STATIC XTAPI PMMPTE GetPteAddress(IN PVOID Address);
|
STATIC XTAPI PMMPTE GetPteAddress(IN PVOID Address);
|
||||||
STATIC XTAPI LONG GetPteDistance(PMMPTE EndPte,
|
STATIC XTAPI LONG GetPteDistance(PMMPTE EndPte,
|
||||||
PMMPTE StartPte);
|
PMMPTE StartPte);
|
||||||
|
STATIC XTAPI ULONG_PTR GetPteListTerminator(VOID);
|
||||||
STATIC XTAPI ULONG GetPteSize(VOID);
|
STATIC XTAPI ULONG GetPteSize(VOID);
|
||||||
STATIC XTAPI ULONG GetPteSoftwareProtection(IN PMMPTE PtePointer);
|
STATIC XTAPI ULONG GetPteSoftwareProtection(IN PMMPTE PtePointer);
|
||||||
STATIC XTAPI ULONG GetPteSoftwarePrototype(IN PMMPTE PtePointer);
|
STATIC XTAPI ULONG GetPteSoftwarePrototype(IN PMMPTE PtePointer);
|
||||||
|
|||||||
@@ -330,6 +330,21 @@ MM::PageMap::GetPteDistance(PMMPTE EndPte,
|
|||||||
return ((ULONG_PTR)EndPte - (ULONG_PTR)StartPte) / sizeof(MMPTE);
|
return ((ULONG_PTR)EndPte - (ULONG_PTR)StartPte) / sizeof(MMPTE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the terminator value for a PTE list.
|
||||||
|
*
|
||||||
|
* @return This routine returns the terminator value for a PTE list.
|
||||||
|
*
|
||||||
|
* @since XT 1.0
|
||||||
|
*/
|
||||||
|
XTAPI
|
||||||
|
ULONG_PTR
|
||||||
|
MM::PageMap::GetPteListTerminator(VOID)
|
||||||
|
{
|
||||||
|
/* Return PTE list terminator value */
|
||||||
|
return 0xFFFFFFFF;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the Offset of the PTE (Page Table Entry), that maps given address.
|
* Gets the Offset of the PTE (Page Table Entry), that maps given address.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -340,6 +340,21 @@ MM::PageMapBasic::GetPteDistance(PMMPTE EndPte,
|
|||||||
return ((ULONG_PTR)EndPte - (ULONG_PTR)StartPte) / sizeof(MMPML2_PTE);
|
return ((ULONG_PTR)EndPte - (ULONG_PTR)StartPte) / sizeof(MMPML2_PTE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the terminator value for a PTE list (PML2).
|
||||||
|
*
|
||||||
|
* @return This routine returns the terminator value for a PTE list.
|
||||||
|
*
|
||||||
|
* @since XT 1.0
|
||||||
|
*/
|
||||||
|
XTAPI
|
||||||
|
ULONG_PTR
|
||||||
|
MM::PageMapBasic::GetPteListTerminator(VOID)
|
||||||
|
{
|
||||||
|
/* Return PTE list terminator value for PML2 */
|
||||||
|
return 0xFFFFF;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the size of a PTE for basic paging (PML2).
|
* Gets the size of a PTE for basic paging (PML2).
|
||||||
*
|
*
|
||||||
@@ -813,6 +828,21 @@ MM::PageMapXpa::GetPteDistance(PMMPTE EndPte,
|
|||||||
return ((ULONG_PTR)EndPte - (ULONG_PTR)StartPte) / sizeof(MMPML3_PTE);
|
return ((ULONG_PTR)EndPte - (ULONG_PTR)StartPte) / sizeof(MMPML3_PTE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the terminator value for a PTE list (PML3).
|
||||||
|
*
|
||||||
|
* @return This routine returns the terminator value for a PTE list.
|
||||||
|
*
|
||||||
|
* @since XT 1.0
|
||||||
|
*/
|
||||||
|
XTAPI
|
||||||
|
ULONG_PTR
|
||||||
|
MM::PageMapXpa::GetPteListTerminator(VOID)
|
||||||
|
{
|
||||||
|
/* Return PTE list terminator value for PML3 */
|
||||||
|
return 0xFFFFFFFF;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the size of a PTE for XPA paging (PML3).
|
* Gets the size of a PTE for XPA paging (PML3).
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -351,6 +351,21 @@ MM::Paging::GetPteDistance(PMMPTE EndPte,
|
|||||||
return PmlRoutines->GetPteDistance(EndPte, StartPte);
|
return PmlRoutines->GetPteDistance(EndPte, StartPte);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the terminator value for a PTE list.
|
||||||
|
*
|
||||||
|
* @return This routine returns the terminator value for a PTE list.
|
||||||
|
*
|
||||||
|
* @since XT 1.0
|
||||||
|
*/
|
||||||
|
XTAPI
|
||||||
|
ULONG_PTR
|
||||||
|
MM::Paging::GetPteListTerminator(VOID)
|
||||||
|
{
|
||||||
|
/* Return PTE list terminator value */
|
||||||
|
return PmlRoutines->GetPteListTerminator();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the size of a PTE.
|
* Gets the size of a PTE.
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user