//20210714 //转入BIOS工作两年多,,
//转入BIOS已近一年多,跟了2个案子 打杂&自学。没人带进步有些慢。一定要把这部分细节理解清晰。。。。。。
//先框架后细节
//ppi结构定义
EFI_PEI_PPI_DESCRIPTOR mPpiListCodePpi = {
(EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),
&gMyPEIGUID,
&mPpi
};
PeiServicesInstallPpi //install ppi 初始化部分
PeiServicesLocatePpi //找到 mPpi部分 通过指针调用
//20200808,遇到问题 &mPpi是null时候如何调用跳转的???
PeiServicesNotifyPpi //通知什么的,spec较抽象,需要深刻理解
copy过来的
PPI notify 相当于 PPI 的callback function.
PPI 和PPI notify 都有相应的GUID来区分
在PEI Services 中有两个function : InstallPPI 和NotifyPPI
1.调用InstallPPI时,会把PPI interface 插入PPI database 的PPI LIST 数组中,假设其可以容纳 128个Items。插入顺序是从PPI LIST的头部向尾部插入,及PPI LIST[0],PPI LIST[1]....
插入该PPI后,然后检查一下是否有与之GUID相同的PPI Notify被notify过。如果有,则调用该PPI notify的notify function完成相应的功能。
2.调用NotifyPPI时,会把PPI notify 插入PPI database 的PPI LIST 数组中,插入顺序是从PPI LIST的尾部向头部插入,及PPI LIST[127],PPI LIST[126]....
插入该PPI notify后,然后检查一下是否有与之GUID相同的PPI被install过。如果有,则调用该PPI notify的notify function完成相应的功能。
3.上述描述的为callback level 的PPI notify的执行方式。
对于dispatch level的PPI notify是在每个PEIM 被执行后去检查是否有与之GUID相同的PPI被 install过,如果有,则调用该PPI notify的notify function完成相应的功能。
本文探讨了UEFI Platform Initialization (PI)中的PPI管理,包括安装、定位和通知过程。通过实例解析了PPI descriptor结构,强调了在PEI阶段PPI与PPI Notify的使用和回调机制,详细解释了InstallPPI和NotifyPPI函数的工作原理,以及不同级别的PPI Notify执行方式。
1128

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



