Linux里的高精度时间计时器(HPET)驱动 【ChatGPT】

发布时间 2023-12-11 22:06:31作者: 摩斯电码

高精度事件计时器(High Precision Event Timer,HPET)是根据Intel和Microsoft的规范(修订版1)设计的硬件。

每个HPET都有一个固定速率的计数器(在10+ MHz,因此称为“高精度”),最多可以有32个比较器。通常提供三个或更多的比较器,每个比较器都可以生成单次中断,至少有一个比较器具有额外的硬件支持周期性中断。比较器也被称为“定时器”,这可能会让人产生误解,因为通常定时器是相互独立的...而这些定时器共享一个计数器,使重置变得复杂。

HPET设备可以支持两种中断路由模式。在一种模式下,比较器是额外的中断源,没有特定的系统角色。许多x86 BIOS编写者根本不路由HPET中断,这就阻止了使用该模式。它们支持另一种“传统替代”模式,其中前两个比较器阻止来自8254定时器和RTC的中断。

该驱动程序支持检测HPET驱动程序分配并在调用驱动程序模块初始化(module_init)例程之前初始化HPET。这使得使用定时器0或1作为主定时器的平台代码可以拦截HPET初始化。可以在arch/x86/kernel/hpet.c中找到此初始化的示例。

该驱动程序提供了一个类似于RTC驱动程序框架中的用户空间API。在文件samples/timers/hpet_example.c中提供了一个示例用户空间程序。