首页 > 其他分享 >UEFI —— Status Code用法

UEFI —— Status Code用法

时间:2024-09-05 17:49:24浏览次数:12  
标签:Status Code PROTOCOL DESCRIPTOR PPI gEfiPeiRscHandlerPpiGuid EFI UEFI PEI

PEI 阶段用法

是PeiServices中的一个组成。
code: Edk2\MdeModulePkg\Universal\ReportStatusCodeRouter\Pei\ReportStatusCodeRouterPei.c
整体逻辑:

  1. 调用ReportStatusCode
  2. 挂在gEfiPeiRscHandlerPpiGuid上的handler都会跑一便
  3. 执行对应的callback

gEfiPeiRscHandlerPpiGuid 用于注册和卸载handler
gEfiPeiStatusCodePpiGuid 用于当有人调用ReportStatusCode的时候,搜寻并执行gEfiPeiRscHandlerPpiGuid 注册的所有handler

Ppi
EFI_PEI_RSC_HANDLER_PPI  mRscHandlerPpi = {
  Register,
  Unregister
};

EFI_PEI_PROGRESS_CODE_PPI  mStatusCodePpi = {
  ReportDispatcher
};

EFI_PEI_PPI_DESCRIPTOR  mRscHandlerPpiList[] = {
  {
    EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST,
    &gEfiPeiRscHandlerPpiGuid,
    &mRscHandlerPpi
  }
};

EFI_PEI_PPI_DESCRIPTOR  mStatusCodePpiList[] = {
  {
    EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST,
    &gEfiPeiStatusCodePpiGuid,
    &mStatusCodePpi
  }
};

Runtime,DXE阶段

Protocol

EFI_STATUS_CODE_PROTOCOL  mStatusCodeProtocol = {
  ReportDispatcher
};

EFI_RSC_HANDLER_PROTOCOL  mRscHandlerProtocol = {
  Register,
  Unregister
};

SMM 阶段

Protocol
EFI_MM_STATUS_CODE_PROTOCOL  mSmmStatusCodeProtocol = {
  ReportDispatcher
};

EFI_MM_RSC_HANDLER_PROTOCOL  mSmmRscHandlerProtocol = {
  Register,
  Unregister
};

标签:Status,Code,PROTOCOL,DESCRIPTOR,PPI,gEfiPeiRscHandlerPpiGuid,EFI,UEFI,PEI
From: https://www.cnblogs.com/nipper/p/18398929

相关文章

  • 《魔兽世界》divxdecoder.dll丢失怎么办?轻松解决指南
    在深入艾泽拉斯大陆的冒险旅途中,每一位玩家都希望拥有流畅且无碍的游戏体验。然而,技术问题偶尔会像突如其来的部落突袭一样打断我们的探索。其中,“divxdecoder.dll丢失”错误便是不少玩家可能遇到的一个小障碍。别担心,本文将为您提供一套简单易行的解决方案。divxdecoder.dll......
  • 9.5 上午 becoder 模拟赛总结 & 题解
    T1文本编辑器说实话,看到题目的第一瞬间,我还以为gm第一道就放了平衡树。一道链表的模板题,当然愿意也可以用平衡树写,不多说了,直接放代码(100pts):#defineN1000005chars[N],t[N];intnow,pre[N],nxt[N];intmain(){scanf("%s%s",s+1,t+1);intn=strlen(s+1);......
  • vscode单行注释失效解决办法
    第一种情况:bug:在使用快捷键注释的时候,只有style和script标签里的内容注释有问题,无法使用快捷键注释。解决方法:禁用vscode的插件Jinja。第二种情况方法一1、Ctrl+shift+p打开命令面板输入:preferences:OpenSettings(JSON);2、在setting.json中添加"files.associations":......
  • VSCode Python环境 gmpy2库安装
    win+rcmd①Wheel文件安装:安装wheel:pipinstallwheel**查看wheel版本的命令:wheelversion②下载对应Python版本的WHL文件:**我的是Python版本是:需要选择的应当是cp39:总之选了最新版本。下载完成后移动文件到所使用的集成开发工具对应目录下在bin层创建了一个ku文件夹存......
  • NowCoder HJ75 公共子串计算
    前言题目:HJ75公共子串计算编程语言:C++解题状态:艰难完成思路暴力解法,要注意的是遍历的范围,以及如何求取连续子串的长度。代码#include<iostream>#include<string>usingnamespacestd;intmain(){stringa,b;cin>>a;cin>>b;str......
  • LeeCode-226. 翻转二叉树
    要求给你一棵二叉树的根节点root,翻转这棵二叉树,并返回其根节点。如下图所示反转所有左右节点.解题思路与94题类似,采用递归调用遍历子节点。在基本结构中,先调换左右节点,再对左右节点内部递归调用本身。实现代码TreeNode*invertTree(TreeNode*root){if......
  • 解决VSCode 使用git拉取前端代码报错问题,屏蔽不参与git提交的文件,git rm --cached,git
    问题描述:`最近,在公司共同开发Angular前端项目过程中,我使用的开发工具时VSCode,遇到一个问题,比如environment.js,package-lock.json,angular.json等等文件都是不需要上传的,别人上传了,我也不想覆盖的文件,你懂吧。但是呢,我一拉代码,就会提示有冲突,要我解决,不然拉不了,有个蠢办法就......
  • Codeforces Round 947 (Div. 1 + Div. 2) VP记录
    CodeforcesRound947(Div.1+Div.2)VP记录我是唐诗,我是唐诗,我是唐。场切:ABCE。笑点解析D是我不在场的GJ模拟赛的T1签到题。A找\(a_i<a_{i-1}\)然后按数量分讨即可。B最小值要取,不能被最小值表示出来的数的最小值要取,暴力即可。C先对相邻两个值的较小......
  • VScode「配置自动代码格式化C/C++」
    前言        你好,我是小莱,希望输出高质量的内容。        在大厂实习的过程中,我发现很多资深的开发者都习惯自己敲空格,按照公司的代码规范使用标尺来提示自己什么时候该换行。也许这样做可以增加代码编辑时的灵活性,但对于新入职场(用惯了VS)的小白来说,无疑大......
  • Towards Robust Blind Face Restoration with Codebook Lookup Transformer(NeurIPS 2
    TowardsRobustBlindFaceRestorationwithCodebookLookupTransformer(NeurIPS2022)这篇论文试图解决的是盲目面部恢复(blindfacerestoration)问题,这是一个高度不确定的任务,通常需要辅助指导来改善从低质量(LQ)输入到高质量(HQ)输出的映射,或者补充输入中丢失的高质量细节。具体......