Add GetPageFrameNumber() to PTE interfaces
Some checks failed
Builds / ExectOS (amd64, debug) (push) Successful in 31s
Builds / ExectOS (amd64, release) (push) Successful in 29s
Builds / ExectOS (i686, debug) (push) Failing after 24s
Builds / ExectOS (i686, release) (push) Failing after 23s

This commit is contained in:
2025-11-04 23:03:47 +01:00
parent 10b8ab347a
commit 66f27e4b9a
6 changed files with 73 additions and 0 deletions

View File

@@ -31,6 +31,7 @@ namespace MM
XTAPI PMMP5E GetP5eAddress(IN PVOID Address);
XTAPI ULONG GetP5eIndex(IN PVOID Address);
XTAPI PVOID GetP5eVirtualAddress(IN PMMP5E P5ePointer);
XTAPI PFN_NUMBER GetPageFrameNumber(IN PMMPTE Pte);
XTAPI PMMPDE GetPdeAddress(IN PVOID Address);
XTAPI ULONG GetPdeIndex(IN PVOID Address);
XTAPI PVOID GetPdeVirtualAddress(IN PMMPDE PdePointer);

View File

@@ -28,6 +28,7 @@ namespace MM
VIRTUAL XTAPI ULONG_PTR GetNextEntry(IN PMMPTE Pte) = 0;
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 PMMPDE GetPdeAddress(IN PVOID Address);
XTAPI ULONG GetPdeIndex(IN PVOID Address);
XTAPI PVOID GetPdeVirtualAddress(IN PMMPDE PdePointer);
@@ -60,6 +61,7 @@ namespace MM
XTAPI ULONG_PTR GetNextEntry(IN PMMPTE Pte);
XTAPI PMMPTE GetNextPte(IN PMMPTE Pte);
XTAPI BOOLEAN GetOneEntry(IN PMMPTE Pte);
XTAPI PFN_NUMBER GetPageFrameNumber(IN PMMPTE Pte);
XTAPI ULONG GetPteSize(VOID);
XTAPI VOID InitializePageMapInfo(VOID);
XTAPI BOOLEAN PteValid(IN PMMPTE PtePointer);
@@ -83,6 +85,7 @@ namespace MM
XTAPI ULONG_PTR GetNextEntry(IN PMMPTE Pte);
XTAPI PMMPTE GetNextPte(IN PMMPTE Pte);
XTAPI BOOLEAN GetOneEntry(IN PMMPTE Pte);
XTAPI PFN_NUMBER GetPageFrameNumber(IN PMMPTE Pte);
XTAPI ULONG GetPteSize(VOID);
XTAPI VOID InitializePageMapInfo(VOID);
XTAPI BOOLEAN PteValid(IN PMMPTE PtePointer);

View File

@@ -30,6 +30,7 @@ namespace MM
STATIC XTAPI ULONG_PTR GetNextEntry(IN PMMPTE Pte);
STATIC XTAPI PMMPTE GetNextPte(IN PMMPTE Pte);
STATIC XTAPI BOOLEAN GetOneEntry(IN PMMPTE Pte);
STATIC XTAPI PFN_NUMBER GetPageFrameNumber(IN PMMPTE Pte);
STATIC XTAPI PMMPDE GetPdeAddress(IN PVOID Address);
STATIC XTAPI PMMPPE GetPpeAddress(IN PVOID Address);
STATIC XTAPI PMMPTE GetPteAddress(IN PVOID Address);

View File

@@ -173,6 +173,23 @@ MM::PageMap::GetP5eVirtualAddress(IN PMMP5E P5ePointer)
return (PVOID)((((LONGLONG)P5ePointer << 61) >> 16) * PageMapInfo.Xpa);
}
/**
* Gets the page frame number from a corresponding PTE.
*
* @param Pte
* The PTE pointer to get the page frame number from.
*
* @return This routine returns the page frame number.
*
* @since XT 1.0
*/
XTAPI
PFN_NUMBER
MM::PageMap::GetPageFrameNumber(IN PMMPTE Pte)
{
return Pte->Hardware.PageFrameNumber;
}
/**
* Gets the address of the PDE (Page Directory Entry), that maps given address.
*

View File

@@ -286,6 +286,23 @@ MM::PageMapBasic::GetOneEntry(IN PMMPTE Pte)
return Pte->Pml2.List.OneEntry;
}
/**
* Gets the page frame number from a corresponding PTE.
*
* @param Pte
* The PTE pointer to get the page frame number from.
*
* @return This routine returns the page frame number.
*
* @since XT 1.0
*/
XTAPI
PFN_NUMBER
MM::PageMapBasic::GetPageFrameNumber(IN PMMPTE Pte)
{
return Pte->Pml2.Hardware.PageFrameNumber;
}
/**
* Gets the size of a PTE for basic paging (PML2).
*
@@ -520,6 +537,23 @@ MM::PageMapXpa::GetOneEntry(IN PMMPTE Pte)
return Pte->Pml3.List.OneEntry;
}
/**
* Gets the page frame number from a corresponding PTE.
*
* @param Pte
* The PTE pointer to get the page frame number from.
*
* @return This routine returns the page frame number.
*
* @since XT 1.0
*/
XTAPI
PFN_NUMBER
MM::PageMapBasic::GetPageFrameNumber(IN PMMPTE Pte)
{
return Pte->Pml3.Hardware.PageFrameNumber;
}
/**
* Gets the size of a PTE for XPA paging (PML3).
*

View File

@@ -170,6 +170,23 @@ MM::Paging::GetOneEntry(IN PMMPTE Pte)
return PmlRoutines->GetOneEntry(Pte);
}
/**
* Gets the page frame number from a corresponding PTE.
*
* @param Pte
* The PTE pointer to get the page frame number from.
*
* @return This routine returns the page frame number.
*
* @since XT 1.0
*/
XTAPI
PFN_NUMBER
MM::Paging::GetPageFrameNumber(IN PMMPTE Pte)
{
return PmlRoutines->GetPageFrameNumber(Pte);
}
/**
* Gets the page map routines for basic paging mode (non-XPA).
*