现在的位置: 首页 > 综合 > 正文

UEFI Events

2013年01月24日 ⁄ 综合 ⁄ 共 1777字 ⁄ 字号 评论关闭

 一、什么是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

计算机生成了可选文字: EVent
These
TypeS
types
//**********************************************
Can
EVT
EVT
Tl加ERmiqht
be、、ORed产,
be叭Ored产,
together
withEVT
垦s
N0
needed一
TIFYWAIT
for
Or
exa.ple
矛了声了声了声了
了了了了了了了夕
#define
#define
NOTIFYSIGNAL。
EVTT工HER
EVTRUNT工ME
0X80000000
0x4D000000
#define
#define
EVT
EVT
NOTIFY
NOTIFY
砚A工T
SIGNAL
0x00000100
0X00000200

 

计算机生成了可选文字: #define
#define
EVTS工GNA工
EVTS工GNA工
EXITBOO
V工RTUAL
TSERVICES
及DDRESSCEANGE
0x00000201
0x60000202

 

三、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

 

Refer:

      Beyond BIOS Second Edition

抱歉!评论已关闭.