Add interface to retrieve page map level (PML)
Tous les contrôles ont réussi
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

Cette révision appartient à :
2026-02-11 20:23:24 +01:00
Parent e2da6220f2
révision f7b7b61ea4
7 fichiers modifiés avec 46 ajouts et 0 suppressions

Voir le fichier

@@ -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);

Voir le fichier

@@ -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);

Voir le fichier

@@ -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;

Voir le fichier

@@ -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);

Voir le fichier

@@ -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.
*

Voir le fichier

@@ -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.
*

Voir le fichier

@@ -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.
*