1 基本概念及用法
在LegacyBIOS中,设备采用中断方式来和CPU交互。但现在已过渡到了EFI时代,中断方式已成往事随风飘。那设备如何和CPU交换信息呢? EFI使用了查询的方式。不同的设备,查询也有快慢之分,所以EFI保留了Timer中断。利用Timer中断,CPU可以在规定的时间点,去查询设备有没有数据要传输。
在Intel平台中,Timer使用的是8254和Timer0。我们设定好Timer0的中断,就可以以此为基准,获取其1倍,2倍,3倍及N倍的查询处理函数。
1.1 Timer的用法
EFI采用Event机制,我们想要使用Timer相关功能,首先要创造一个EVT_TIMER类型的Event。然后为其设定时间周期。然后该Event就会按照一定周期,一次次地执行。
1.1.1 创造EVT_TIMER和EVENT
EFI_STATUS EFIAPI CoreCreateEvent(
IN UINT32 Type,
IN EFI_TPL NotifyTpl,
IN EFI_EVENT_NOTIFY NotifyFunction, OPTIONAL
IN VOID *NotifyContext, OPTIONAL
OUT EFI_EVENT *Event
)