(工作真是太奇妙了,总觉着我在疯狂的给自己立flag)
顺便记录自己第一次说话都打颤的技术交流
1,关于event
event的定义属实难找,教材也没有,spec也没有。
不过它还是很好理解的,作为一个曾经写过如何自学qt博客的人(可惜最后工作完全用不上),我看见它的第一反应就是
这不connect吗
设置一个信号一个槽,当信号被触发时运行槽里的内容
至于怎么用,我举事件类型的例子就可以了

这是常用的三种类型(还有其他类型,类型与类型还可以组合,这不赘述了)
顺便一提,WAIT和SIGHAL是事件的两个互斥状态
下面说gEventQueue[Event->Notify]
2,事件优先级(Notify TPL)
异步事件一定需要事件优先级。如果没有谁重要、谁更重要的概念,那系统干脆按进入的时间顺序运行多好呢。
UEFI提供0~31,共32个优先级。其中,UEFI预定义了四个优先级。包括位于4的TPL_APPLICATION、位于8的TPL_CALLBACK、位于16的TPL_NOTIFY、位于31的TPL_HIGH_LEVEL(在此优先级关闭中断)
哪个函数在哪个优先级自己去spec文档看吧——这里比较有趣的是时间中断和waitforsighal都在TPL_APPLICATION,原因会在第二节提。
然后就是两个数据结构
gEventQueue 保存已经被唤醒、需要执行回调函数的事件,根据优先级分为多个(其实就是32个)链表
gEventPending 使用位图来保存gEve

本文深入探讨了UEFI规范下的事件系统运作原理,包括事件的定义、优先级设定、数据结构设计、接口使用及锁机制,并通过具体示例说明了事件的等待与触发过程。
&spm=1001.2101.3001.5002&articleId=119315757&d=1&t=3&u=dd34f6bbef5f491d81d78039f47d6b94)
1067

被折叠的 条评论
为什么被折叠?



