Add interface to retrieve page map level (PML)
All checks were successful
Builds / ExectOS (amd64, release) (push) Successful in 32s
Builds / ExectOS (i686, debug) (push) Successful in 40s
Builds / ExectOS (i686, release) (push) Successful in 30s
Builds / ExectOS (amd64, debug) (push) Successful in 43s

This commit is contained in:
2026-02-11 20:23:24 +01:00
parent e2da6220f2
commit f7b7b61ea4
7 changed files with 46 additions and 0 deletions

View File

@@ -30,6 +30,7 @@ namespace MM
XTAPI PMMP5E GetP5eAddress(IN PVOID Address);
XTAPI ULONG GetP5eOffset(IN PVOID Address);
XTAPI PVOID GetP5eVirtualAddress(IN PMMP5E P5ePointer);
XTAPI USHORT GetPageMapLevel();
XTAPI PFN_NUMBER GetPageFrameNumber(IN PMMPTE Pte);
XTAPI PMMPDE GetPdeAddress(IN PVOID Address);
XTAPI ULONG GetPdeOffset(IN PVOID Address);

View File

@@ -31,6 +31,7 @@ namespace MM
STATIC XTAPI PMMP5E GetP5eAddress(IN PVOID Address);
STATIC XTAPI PVOID GetP5eVirtualAddress(IN PMMP5E P5ePointer);
STATIC XTAPI PFN_NUMBER GetPageFrameNumber(IN PMMPTE Pte);
STATIC XTAPI USHORT GetPageMapLevel();
STATIC XTAPI PMMPDE GetPdeAddress(IN PVOID Address);
STATIC XTAPI PVOID GetPdeVirtualAddress(IN PMMPDE PdePointer);
STATIC XTAPI PMMPPE GetPpeAddress(IN PVOID Address);

View File

@@ -28,6 +28,7 @@ namespace MM
VIRTUAL XTAPI PMMPTE GetNextPte(IN PMMPTE Pte) = 0;
VIRTUAL XTAPI BOOLEAN GetOneEntry(IN PMMPTE Pte) = 0;
VIRTUAL XTAPI PFN_NUMBER GetPageFrameNumber(IN PMMPTE Pte) = 0;
XTAPI USHORT GetPageMapLevel();
XTAPI PMMPDE GetPdeAddress(IN PVOID Address);
XTAPI ULONG GetPdeOffset(IN PVOID Address);
VIRTUAL XTAPI PVOID GetPdeVirtualAddress(IN PMMPDE PdePointer) = 0;

View File

@@ -29,6 +29,7 @@ namespace MM
STATIC XTAPI PMMPTE GetNextPte(IN PMMPTE Pte);
STATIC XTAPI BOOLEAN GetOneEntry(IN PMMPTE Pte);
STATIC XTAPI PFN_NUMBER GetPageFrameNumber(IN PMMPTE Pte);
STATIC XTAPI USHORT GetPageMapLevel();
STATIC XTAPI PMMPDE GetPdeAddress(IN PVOID Address);
STATIC XTAPI PVOID GetPdeVirtualAddress(IN PMMPDE PdePointer);
STATIC XTAPI PMMPPE GetPpeAddress(IN PVOID Address);

View File

@@ -176,6 +176,20 @@ MM::PageMap::GetPageFrameNumber(IN PMMPTE Pte)
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.
*

View File

@@ -9,6 +9,20 @@
#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.
*

View File

@@ -189,6 +189,20 @@ MM::Paging::GetPageMapBasicRoutines(VOID)
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.
*