Expose installed CPU count and rename state save function
Some checks failed
Builds / ExectOS (amd64, debug) (push) Failing after 24s
Builds / ExectOS (i686, debug) (push) Failing after 24s
Builds / ExectOS (amd64, release) (push) Failing after 39s
Builds / ExectOS (i686, release) (push) Failing after 36s

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 PKPROCESSOR_CONTROL_BLOCK GetCurrentProcessorControlBlock(VOID);
STATIC XTAPI ULONG GetCurrentProcessorNumber(VOID); STATIC XTAPI ULONG GetCurrentProcessorNumber(VOID);
STATIC XTAPI PKTHREAD GetCurrentThread(VOID); STATIC XTAPI PKTHREAD GetCurrentThread(VOID);
STATIC XTAPI ULONG GetInstalledCpus(VOID);
STATIC XTAPI PKPROCESSOR_BLOCK GetProcessorBlock(IN ULONG CpuNumber); STATIC XTAPI PKPROCESSOR_BLOCK GetProcessorBlock(IN ULONG CpuNumber);
STATIC XTAPI XTSTATUS InitializeProcessorBlocks(); STATIC XTAPI XTSTATUS InitializeProcessorBlocks();
STATIC XTAPI VOID RegisterHardwareId(IN ULONG HardwareId); STATIC XTAPI VOID RegisterHardwareId(IN ULONG HardwareId);
STATIC XTAPI VOID RegisterProcessorBlock(ULONG CpuNumber, STATIC XTAPI VOID RegisterProcessorBlock(ULONG CpuNumber,
PKPROCESSOR_BLOCK ProcessorBlock); 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)); 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. * Gets the processor block for the specified processor number.
* *
@@ -189,7 +204,7 @@ KE::Processor::RegisterProcessorBlock(ULONG CpuNumber,
*/ */
XTAPI XTAPI
VOID VOID
KE::Processor::SaveProcessorState(OUT PKPROCESSOR_STATE CpuState) KE::Processor::SaveProcessorControlState(OUT PKPROCESSOR_STATE CpuState)
{ {
/* Save CR registers */ /* Save CR registers */
CpuState->SpecialRegisters.Cr0 = AR::CpuFunctions::ReadControlRegister(0); 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)); 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. * Gets the processor block for the specified processor number.
* *
@@ -189,7 +204,7 @@ KE::Processor::RegisterProcessorBlock(ULONG CpuNumber,
*/ */
XTAPI XTAPI
VOID VOID
KE::Processor::SaveProcessorState(OUT PKPROCESSOR_STATE CpuState) KE::Processor::SaveProcessorControlState(OUT PKPROCESSOR_STATE CpuState)
{ {
/* Save CR registers */ /* Save CR registers */
CpuState->SpecialRegisters.Cr0 = AR::CpuFunctions::ReadControlRegister(0); CpuState->SpecialRegisters.Cr0 = AR::CpuFunctions::ReadControlRegister(0);