Implement APIC timer initialization and calibration
Some checks failed
Builds / ExectOS (i686, debug) (push) Failing after 24s
Builds / ExectOS (amd64, debug) (push) Failing after 29s
Builds / ExectOS (amd64, release) (push) Failing after 25s
Builds / ExectOS (i686, release) (push) Failing after 28s

This commit is contained in:
2026-04-08 00:15:03 +02:00
parent 4ef068dadc
commit adb591f8c7
9 changed files with 452 additions and 0 deletions

View File

@@ -0,0 +1,38 @@
/**
* PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtoskrnl/includes/hl/timer.hh
* DESCRIPTION: ACPI Timer support
* DEVELOPERS: Aiken Harris <harraiken91@gmail.com>
*/
#ifndef __XTOSKRNL_HL_TIMER_HH
#define __XTOSKRNL_HL_TIMER_HH
#include <xtos.hh>
/* Hardware Layer */
namespace HL
{
class Timer
{
private:
STATIC ULONG ProfilingInterval;
STATIC ULONG TimerFrequency;
public:
STATIC XTAPI VOID InitializeApicTimer(VOID);
STATIC XTAPI ULONG_PTR SetProfileInterval(IN ULONG_PTR Interval);
STATIC XTAPI VOID StartProfileInterrupt(IN KPROFILE_SOURCE ProfileSource);
STATIC XTAPI VOID StopProfileInterrupt(IN KPROFILE_SOURCE ProfileSource);
private:
STATIC XTAPI XTSTATUS CalibrateApicTimer();
STATIC XTAPI XTSTATUS GetApicTimerFrequency(OUT PULONG Frequency);
STATIC XTAPI VOID PitStallExecution(IN ULONG Us);
STATIC XTAPI VOID StallExecution(IN ULONG MicroSeconds);
};
}
#endif /* __XTOSKRNL_HL_TIMER_HH */