Add interface to retrieve page map level (PML)
This commit is contained in:
@@ -30,6 +30,7 @@ namespace MM
|
|||||||
XTAPI PMMP5E GetP5eAddress(IN PVOID Address);
|
XTAPI PMMP5E GetP5eAddress(IN PVOID Address);
|
||||||
XTAPI ULONG GetP5eOffset(IN PVOID Address);
|
XTAPI ULONG GetP5eOffset(IN PVOID Address);
|
||||||
XTAPI PVOID GetP5eVirtualAddress(IN PMMP5E P5ePointer);
|
XTAPI PVOID GetP5eVirtualAddress(IN PMMP5E P5ePointer);
|
||||||
|
XTAPI USHORT GetPageMapLevel();
|
||||||
XTAPI PFN_NUMBER GetPageFrameNumber(IN PMMPTE Pte);
|
XTAPI PFN_NUMBER GetPageFrameNumber(IN PMMPTE Pte);
|
||||||
XTAPI PMMPDE GetPdeAddress(IN PVOID Address);
|
XTAPI PMMPDE GetPdeAddress(IN PVOID Address);
|
||||||
XTAPI ULONG GetPdeOffset(IN PVOID Address);
|
XTAPI ULONG GetPdeOffset(IN PVOID Address);
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ namespace MM
|
|||||||
STATIC XTAPI PMMP5E GetP5eAddress(IN PVOID Address);
|
STATIC XTAPI PMMP5E GetP5eAddress(IN PVOID Address);
|
||||||
STATIC XTAPI PVOID GetP5eVirtualAddress(IN PMMP5E P5ePointer);
|
STATIC XTAPI PVOID GetP5eVirtualAddress(IN PMMP5E P5ePointer);
|
||||||
STATIC XTAPI PFN_NUMBER GetPageFrameNumber(IN PMMPTE Pte);
|
STATIC XTAPI PFN_NUMBER GetPageFrameNumber(IN PMMPTE Pte);
|
||||||
|
STATIC XTAPI USHORT GetPageMapLevel();
|
||||||
STATIC XTAPI PMMPDE GetPdeAddress(IN PVOID Address);
|
STATIC XTAPI PMMPDE GetPdeAddress(IN PVOID Address);
|
||||||
STATIC XTAPI PVOID GetPdeVirtualAddress(IN PMMPDE PdePointer);
|
STATIC XTAPI PVOID GetPdeVirtualAddress(IN PMMPDE PdePointer);
|
||||||
STATIC XTAPI PMMPPE GetPpeAddress(IN PVOID Address);
|
STATIC XTAPI PMMPPE GetPpeAddress(IN PVOID Address);
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ namespace MM
|
|||||||
VIRTUAL XTAPI PMMPTE GetNextPte(IN PMMPTE Pte) = 0;
|
VIRTUAL XTAPI PMMPTE GetNextPte(IN PMMPTE Pte) = 0;
|
||||||
VIRTUAL XTAPI BOOLEAN GetOneEntry(IN PMMPTE Pte) = 0;
|
VIRTUAL XTAPI BOOLEAN GetOneEntry(IN PMMPTE Pte) = 0;
|
||||||
VIRTUAL XTAPI PFN_NUMBER GetPageFrameNumber(IN PMMPTE Pte) = 0;
|
VIRTUAL XTAPI PFN_NUMBER GetPageFrameNumber(IN PMMPTE Pte) = 0;
|
||||||
|
XTAPI USHORT GetPageMapLevel();
|
||||||
XTAPI PMMPDE GetPdeAddress(IN PVOID Address);
|
XTAPI PMMPDE GetPdeAddress(IN PVOID Address);
|
||||||
XTAPI ULONG GetPdeOffset(IN PVOID Address);
|
XTAPI ULONG GetPdeOffset(IN PVOID Address);
|
||||||
VIRTUAL XTAPI PVOID GetPdeVirtualAddress(IN PMMPDE PdePointer) = 0;
|
VIRTUAL XTAPI PVOID GetPdeVirtualAddress(IN PMMPDE PdePointer) = 0;
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ namespace MM
|
|||||||
STATIC XTAPI PMMPTE GetNextPte(IN PMMPTE Pte);
|
STATIC XTAPI PMMPTE GetNextPte(IN PMMPTE Pte);
|
||||||
STATIC XTAPI BOOLEAN GetOneEntry(IN PMMPTE Pte);
|
STATIC XTAPI BOOLEAN GetOneEntry(IN PMMPTE Pte);
|
||||||
STATIC XTAPI PFN_NUMBER GetPageFrameNumber(IN PMMPTE Pte);
|
STATIC XTAPI PFN_NUMBER GetPageFrameNumber(IN PMMPTE Pte);
|
||||||
|
STATIC XTAPI USHORT GetPageMapLevel();
|
||||||
STATIC XTAPI PMMPDE GetPdeAddress(IN PVOID Address);
|
STATIC XTAPI PMMPDE GetPdeAddress(IN PVOID Address);
|
||||||
STATIC XTAPI PVOID GetPdeVirtualAddress(IN PMMPDE PdePointer);
|
STATIC XTAPI PVOID GetPdeVirtualAddress(IN PMMPDE PdePointer);
|
||||||
STATIC XTAPI PMMPPE GetPpeAddress(IN PVOID Address);
|
STATIC XTAPI PMMPPE GetPpeAddress(IN PVOID Address);
|
||||||
|
|||||||
@@ -176,6 +176,20 @@ MM::PageMap::GetPageFrameNumber(IN PMMPTE Pte)
|
|||||||
return Pte->Hardware.PageFrameNumber;
|
return Pte->Hardware.PageFrameNumber;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets Page Map Level (PML) for current paging mode.
|
||||||
|
*
|
||||||
|
* @return This routine returns the page map level.
|
||||||
|
*
|
||||||
|
* @since XT 1.0
|
||||||
|
*/
|
||||||
|
XTAPI
|
||||||
|
USHORT
|
||||||
|
MM::PageMap::GetPageMapLevel()
|
||||||
|
{
|
||||||
|
return PageMapInfo.Xpa ? 5 : 4;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the address of the PDE (Page Directory Entry), that maps given address.
|
* Gets the address of the PDE (Page Directory Entry), that maps given address.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -9,6 +9,20 @@
|
|||||||
#include <xtos.hh>
|
#include <xtos.hh>
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets Page Map Level (PML) for current paging mode.
|
||||||
|
*
|
||||||
|
* @return This routine returns the page map level.
|
||||||
|
*
|
||||||
|
* @since XT 1.0
|
||||||
|
*/
|
||||||
|
XTAPI
|
||||||
|
USHORT
|
||||||
|
MM::PageMap::GetPageMapLevel()
|
||||||
|
{
|
||||||
|
return PageMapInfo.Xpa ? 3 : 2;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the address of the PDE (Page Directory Entry), that maps given address.
|
* Gets the address of the PDE (Page Directory Entry), that maps given address.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -189,6 +189,20 @@ MM::Paging::GetPageMapBasicRoutines(VOID)
|
|||||||
return &PageMapBasicRoutines;
|
return &PageMapBasicRoutines;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets Page Map Level (PML) for current paging mode.
|
||||||
|
*
|
||||||
|
* @return This routine returns the page map level.
|
||||||
|
*
|
||||||
|
* @since XT 1.0
|
||||||
|
*/
|
||||||
|
XTAPI
|
||||||
|
USHORT
|
||||||
|
MM::Paging::GetPageMapLevel()
|
||||||
|
{
|
||||||
|
return PmlRoutines->GetPageMapLevel();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the page map routines for eXtended Physical Addressing (XPA) mode.
|
* Gets the page map routines for eXtended Physical Addressing (XPA) mode.
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user