【UEFI基础】Event(四)

1.UEFI 事件服务

UEFI 启动服务提供了很多函数来实现事件的调用:

  // Event & Timer Services
  //
  EFI_CREATE_EVENT                  CreateEvent;
  EFI_SET_TIMER                     SetTimer;
  EFI_WAIT_FOR_EVENT                WaitForEvent;
  EFI_SIGNAL_EVENT                  SignalEvent;
  EFI_CLOSE_EVENT                   CloseEvent;
  EFI_CHECK_EVENT                   CheckEvent;

每个流程大致是这样的
在这里插入图片描述

2. UEFI回调函数执行

我们可以看到最终把回调事件加入到队列中。队列如何插入数据的我们单独在数据结构的专栏里面说明UEFI event 队列,这里不过多说明。加入到链表之后并没有执行。最后我们发现是在定时器里面执行的。
在这里插入图片描述

3. 事件队列初始化

CreateEvent用来创建事件,如果创建成功会把要执行的函数加入到gEventSignalQueue队列中。

//
// The Event's NotifyFunction must be queued whenever the event is signaled
//
InsertHeadList (&gEventSignalQueue, &IEvent->SignalLink);

队列在初始化函数CoreInitializeEventServices中初始化

  for (Index=0; Index <= TPL_HIGH_LEVEL; Index++) {
    InitializeListHead (&gEventQueue[Index]);
  }

进一步可以发现该函数理所当然的在DxeMain函数中调用

  //
  // Initialize the Event Services
  //
  Status = CoreInitializeEventServices ();

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值