Expose installed CPU count and rename state save function

This commit is contained in:
2026-06-07 13:05:31 +02:00
parent f82562f450
commit 9c2357dfe6
3 changed files with 34 additions and 3 deletions

View File

@@ -26,12 +26,13 @@ namespace KE
STATIC XTAPI PKPROCESSOR_CONTROL_BLOCK GetCurrentProcessorControlBlock(VOID);
STATIC XTAPI ULONG GetCurrentProcessorNumber(VOID);
STATIC XTAPI PKTHREAD GetCurrentThread(VOID);
STATIC XTAPI ULONG GetInstalledCpus(VOID);
STATIC XTAPI PKPROCESSOR_BLOCK GetProcessorBlock(IN ULONG CpuNumber);
STATIC XTAPI XTSTATUS InitializeProcessorBlocks();
STATIC XTAPI VOID RegisterHardwareId(IN ULONG HardwareId);
STATIC XTAPI VOID RegisterProcessorBlock(ULONG CpuNumber,
PKPROCESSOR_BLOCK ProcessorBlock);
STATIC XTAPI VOID SaveProcessorState(OUT PKPROCESSOR_STATE CpuState);
STATIC XTAPI VOID SaveProcessorControlState(OUT PKPROCESSOR_STATE CpuState);
};
}

View File

@@ -66,6 +66,21 @@ KE::Processor::GetCurrentThread(VOID)
return (PKTHREAD)AR::CpuFunctions::ReadGSQuadWord(FIELD_OFFSET(KPROCESSOR_BLOCK, Prcb.CurrentThread));
}
/**
* Retrieves the number of installed and enabled CPUs in the system.
*
* @return This routine returns the number of installed CPUs in the system.
*
* @since XT 1.0
*/
XTAPI
ULONG
KE::Processor::GetInstalledCpus(VOID)
{
/* Return number of installed CPUs */
return InstalledCpus;
}
/**
* Gets the processor block for the specified processor number.
*
@@ -189,7 +204,7 @@ KE::Processor::RegisterProcessorBlock(ULONG CpuNumber,
*/
XTAPI
VOID
KE::Processor::SaveProcessorState(OUT PKPROCESSOR_STATE CpuState)
KE::Processor::SaveProcessorControlState(OUT PKPROCESSOR_STATE CpuState)
{
/* Save CR registers */
CpuState->SpecialRegisters.Cr0 = AR::CpuFunctions::ReadControlRegister(0);

View File

@@ -66,6 +66,21 @@ KE::Processor::GetCurrentThread(VOID)
return (PKTHREAD)AR::CpuFunctions::ReadFSDualWord(FIELD_OFFSET(KPROCESSOR_BLOCK, Prcb.CurrentThread));
}
/**
* Retrieves the number of installed and enabled CPUs in the system.
*
* @return This routine returns the number of installed CPUs in the system.
*
* @since XT 1.0
*/
XTAPI
ULONG
KE::Processor::GetInstalledCpus(VOID)
{
/* Return number of installed CPUs */
return InstalledCpus;
}
/**
* Gets the processor block for the specified processor number.
*
@@ -189,7 +204,7 @@ KE::Processor::RegisterProcessorBlock(ULONG CpuNumber,
*/
XTAPI
VOID
KE::Processor::SaveProcessorState(OUT PKPROCESSOR_STATE CpuState)
KE::Processor::SaveProcessorControlState(OUT PKPROCESSOR_STATE CpuState)
{
/* Save CR registers */
CpuState->SpecialRegisters.Cr0 = AR::CpuFunctions::ReadControlRegister(0);