【UEFI基础】UEFI Events

本文深入解析UEFI中的Events概念,包括其类型、工作原理及在UEFI环境中的作用。介绍了WaitEvents和SignalEvents的区别,以及SignalEvents下ExitBootServicesEvents、SetVirtualAddressMapEvents和TimerEvents的具体应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 一、什么是Events 
Legacy post is Interrupt, EFI post is Event.
Events 是UEFI Service管理的另一个类型的对像。一个Event可以被创建,也可以被销毁:它可以处在Waiting状态,也可以处在Signaled状态。
一个UEFI Image可以对Event做以下的事情:
1). 创建一个Event                                                                    //CreateEvent()
2). 销毁一个Event                                                                    //CloseEvent()
3). 查看一个Event是否处在Signaled状态                           //CheckEvent()
4). 等待一个Event进入Signaled状态                                   //WaitForEvent()
5). 请求一个Event从Waiting状态进入到Signaled状态     //SignalEvent()
UEFI不Support Interrupt(UEFI唯一一个中断int 0,timer),除了timer中断,主机不能使用硬件中断和外部设备通信。所以,只能使用polling方式来访问设备。UEFI目前不支持多线程,是单线程环境,但是它必须提供一种异步机制来支持有限多任务,这就是引入EVENT的原因。
UEFI Driver经常使用Timer Events来允许Driver周期性的轮询Device。
 
二、UEFI Events的类型及相互之间的关系

1. Wait Events
    只要这种类型的Event一被检查或被服务,它的notification功能就被执行。
2. Signal Events
    当这种类型的Event从Waiting 状态转到Signaled 状态的时候,它的Notification功能就被排队,等待执行。
    Signal Events又分为三种类型:
    1). Exit Boot Services Events
          当UEFI Boot Service ExitBootServices() 被调用的时候,这种类型的Signal Event 才从Waiting 状态转到Signaled 状态,这时它的Notification功能才被排队,等待执行。
         这个调用发生在平台的控制权由Firmware交给OS的时候。
     2). Set Virtual Address Map Events
          当UEFI Runtime Service SetVirtualAddressMap() 被调用的时候,这种类型的Signal Event 才从Waiting 状态转到Signaled 状态,这时它的Notification功能才被排队,等待执行。
           这个调用发生在OS请求UEFI的Runtime Component从物理地址模式转向虚拟地址模式的时候。
     3). Timer Events
          当规定时间到了的时候,这种类型的Signal Event 才从Waiting 状态转到Signaled 状态,这时它的Notification功能才被排队,等待执行。
          Timer Events又分为两种:
           1>. Periodic Timer Events 周期性的Timer Events
            2>. One-shot Timer Events 一次性的Timer Events

三、Events的三要素
1. The Task Priority Level(TPL) of the Event
      TPL的目的:
       1). 定义一个Notification function执行的优先次序。
       2). To create Locks, 确保互斥存取。
         
2. A Notification function
3. A Notification context

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值