UEFI.源码分析.DXE的异步事件服务.第三部分.定时器与时钟中断

UEFI.源码分析.DXE的异步事件服务.第二部分.任务优先级 源代码:EDK2 版本:UDK2017 UEFI源码分析第二篇,异步事件服务 第二部分,任务优先级 第一部分,事件驱动 定时器类型EVT_TIMER将在第三部分 任务优先级简述 典型的优先级有四种 /** MdePkg/Include/Uefi/UefiSpec.h **/ 585 // 586 // Task prior... 阅读详情
  • 源代码:EDK2
  • 版本:UDK2017
  • UEFI源码分析第二篇,异步事件服务
  • 第三部分,定时器
  • 第一部分,事件驱动
  • 第二部分,任务优先级

设置定时器EVT_TIMER

244 EFI_STATUS                            
245 EFIAPI                                
246 CoreSetTimer (                        
247   IN EFI_EVENT            UserEvent,  
248   IN EFI_TIMER_DELAY      Type,       
249   IN UINT64               TriggerTime 
250   )                                   

函数CoreSetTimer将定时器类型的事件设置好超时时间,也就是更新Event->Timer域

273   if (Event->Timer.Link.ForwardLink != NULL) {
274     RemoveEntryList (&Event->Timer.Link);     
275     Event->Timer.Link.ForwardLink = NULL;     
276   }                                           

进一步调用CoreInsertEventTimer将定时器设置好。

281   if (Type != TimerCancel) {                                          
282                                                                       
283     if (Type == TimerPeriodic) {                                      
284       if (TriggerTime == 0) {                                         
285         gTimer->GetTimerPeriod (gTimer, &TriggerTime);                
286       }                                                               
287       Event->Timer.Period = TriggerTime;                              
288     }                                                                 
289                                                                       
290     Event->Timer.TriggerTime = CoreCurrentSystemTime () + TriggerTime;
291     CoreInsertEventTimer (Event);                                     
292                                                                       
293     if (TriggerTime == 0) {                                           
294       CoreSignalEvent (mEfiCheckTimerEvent);                          
295     }                                                                 
296   }                                                                   

函数CoreInsertEventTimer如下

 40 VOID                   
 41 CoreInsertEventTimer ( 
 42   IN IEVENT   *Event   
 43   )                    
 44 {                      
 54   TriggerTime = Event->Timer.TriggerTime; 
 59   for (Link = mEfiTimerList.ForwardLink; Link != &mEfiTimerList; Link = Link->ForwardLink) {
 60     Event2 = CR (Link, IEVENT, Timer.Link, EVENT_SIGNATURE);                                
 61                                                                                             
 62     if (Event2->Timer.TriggerTime > TriggerTime) {                                          
 63       break;                                                                                
 64</
UEFI.源码分析.DXE的内存服务.第二部分.函数接口 源码EDK2:Tianocore UEFI源码分析系列第二篇,DXE阶段的内存服务 第二部分,函数接口 DXE阶段源码目录MdeModulePkg/Core/Dxe 首先我们来分析上一节的遗留问题,即函数CoreAddRange 之后我们分析一下其余的接口,如申请内存、释放内存等 最后我们从一个整体的视角来看整个内存服务 初始化流程 首先我们回顾一下整个内存初始化的过程。 在D... 阅读详情

相关推荐

Uefi中的Event

将Event当作32开发中的中断来看,主要作用还是在于提高系统性能,不用把CPU资源浪费在等待上,当事件触发后,再让CPU过来处理。

Wuxin的博客 764

UEFI源码解析之UEFI_DRIVER

Dxe Driver可以视作UEFI中的一个服务,在entry中通过protocol安装自己的服务,在Bds等位置通过locate protocol使用该服务,不必依赖与具体的硬件。当需要封装某个设备或总线的时候,对应于具体的物理实现,需要用到UEFI Driver的模型实现。UEFI Driver模型实现设备/总线的检测,安装,卸载,更新,启动,停止等;一个Driver可能适配多个设备,一个设备可能连接管理多个子设备等,因此UEFI Driver还可以多次安装

wangadi057612的博客 5086

UEFI源码解析之EVENT

UEFI-EDK2是单核单线程的架构,除了时钟中断外,没有其他中断机制,Event在UEFI中实现了异步执行的能力;

wangadi057612的博客 2977

从Live2D到Unreal Engine:2D与3D虚拟数字人核心技术实现路径解析

本文深入解析了从Live2D到Unreal Engine的2D与3D虚拟数字人核心技术实现路径,涵盖技术选型、制作流程与优化技巧。通过对比2D骨骼动画与3D建模渲染的差异,结合实战案例,帮助开发者根据项目需求选择合适方案,提升虚拟数字人的交互体验与视觉效果。

weixin_30379531的博客 149

Gitee自动创建PR之——评审模式

一 创建PR的常规操作 本地更新主干(一般为master分支),基于主干新建一个分支并(如Dev分支)切换; 进行新的需求开发; 将这个分支推送到远端; 打开 Gitee ,进入创建 Pull Request 界面; 选定目标分支(及我们需要合并到主干分支的分支,一般即为我们的开发分支); 填写 Title 以及 Description; 点击提交 Pull Request。 二 更快的常见PR的方式— — 评审模式 现在 Gitee.

calm_encode的博客 2985

SKILL实现电路virtuoso原理图schematic中引脚pin的net自动打上pin label

SKILL实现电路virtuoso原理图schematic中引脚pin的net自动打上pin label

qq_41510657的博客 2610

Burp靶场实战:JWT签名绕过漏洞分析与利用

本文通过Burp Suite靶场实战,深入剖析了JWT签名绕过漏洞的多种攻击手法,包括签名未验证、alg:none攻击、弱密钥爆破、JWK/JKU头注入、KID路径遍历及算法混淆攻击。文章详细演示了利用过程,并提供了关键的防御指南,帮助开发和安全人员加固JWT实现,确保认证安全。

weixin_29325515的博客 593

Web3:Ubuntu系统 使用Docker-compose方式部署blockscout浏览器&配置版本-v5.2.3-beta+charts图表

详细介绍了在Ubuntu 23.04系统上部署Blockscout浏览器的步骤,以及过程中遇到的问题进行一一解决。

鄙人kunzhi96,感恩遇见! 2万+

华为OD技术面八股文_C++_01

汇总华为OD技术面C++方向八股文真题,并提供详细解答。

qq_45776114的博客 1884

全球建筑物提取数据集(免费下载):微软/GlobalMLBuildingFootprints

这个是GitHub上的开源数据集: https://github.com/microsoft/GlobalMLBuildingFootprints 介绍 必应地图正在世界各地发布开放式建筑足迹。我们从 2014 年到 2021 年间的 Bing Maps 图像中检测到了 7.77 亿座建筑物,包括 Maxar 和 Airbus 的图像。数据可在 ODbL 下免费下载和使用。该数据集补充了我们的其他版本。 包括的地区 执照 此数据由 Microsoft 根据Open Dat..

此星光明博客 6288

地方政府预算数据抓取:利用Python爬虫获取预算安排、资金分配与支出情况

爬虫是通过模拟浏览器行为,从互联网上自动获取数据的程序。在本案例中,我们将通过爬虫从地方政府的官方网站或预算公开平台抓取各类预算信息。这些信息一般以HTML网页的形式呈现,可以通过爬虫对网页内容进行解析,提取所需的预算数据。Python作为数据抓取的强大工具,凭借其简洁的语法、强大的第三方库(如requestsSelenium等)以及丰富的数据处理能力,成为了开发爬虫应用的首选语言。

2201_76125261的博客 941

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

上一篇: UEFI.源码分析.DXE的异步事件服务.第二部分.任务优先级
下一篇: 计算机体系结构.是系统结构还是体系结构
木艮氵
博客等级 码龄11年 136粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值