04_PEI之InstallPpi演算法

来源:互联网 发布:黑马程序员 达内 编辑:程序博客网 时间:2024/06/03 14:21

转自:http://blog.yam.com/wttmama/article/33762035

m,這部份是第一個理解的東西

但,說真的,它對BIOS 真的沒幫助,只能幫你瞭解 PEI 的 IntallPpi 是怎麼做的而已。
這個內容可以套用在
InstallPpi
LocatePpi
NotifyPpi



在 PEI Foundation 中。有提供一個 叫 InstallPpi 的 function 。
現在要描述的是,它的結構。

懂結構者,得天下!!~(自己亂掰的! )

以下是自畫圖


m,簡單的說~紅色那一塊就是 PEIM 應該提供的 Function
是以 PPI DESCRIPTOR 的方式開放。
在 InstallPpi 時,會加到一個結構,由頭往後加
而 NotifyPpi 則是由後面往前加。
LocatePpi 是會從頭開始找。

m,什麼是PPI
PPI : PEIM to PEIM Interface
 
在應用上,InstallPpi 是搭配 LocatePpi ,(加入後拿出來用 )
而 NotifyPpi 則是用來指定某個 Ppi  Install 時,馬上執行 NotifyPpi 的callback function。

m,說真的,這邊只是為了 熱身而已,不說 source code 是因為,懂意義後,其實很容易看懂它在做啥
目前來說,這邊還真是不常改,不常用。

下面用別種圖示來說明它們。

當你 Install一個 Ppi 時,就如前面說的,會安裝一個 PPI Descriptor 至一個結構之中,如上圖
而 Locate 其實就是從這個結構找 Match 的 GUID 。再把 ppi 交給你而已

同理 NotifyPPi 也是,如下圖所示,但它是從結構尾巴往上放。
使用場合則是像之前說的,當上面各有一個 Match 的時候,就會執行 Notify 的 callback function
下圖是情境說明
1. 已存在 紅色 ppi 及綠色 notifyPpi
2. Install 紫色 PPI 
3. 內部演算法去判斷 NotifyPpi 有沒有和 紫色 PPI 相符 的 GUID
4. 有的話,就執行 Notify Function。
5. 沒有的話,InstallPpi結束。

note: NotifyPpi 時,也會檢查,裝了 Notify 檢查 Ppi那一群 的。


說真的,為什麼要寫這一個…因為,它是我在 UEFI 追的第一個有成就感的 code 
因為我覺得我說的很生動~~哈~所以,這一定要記錄一下的啦!~~
圖文說明說真的有點差~但~現場很生動的呢!!~~不過,這將只會是個記憶
因為,懂這個又沒用,bios 知識又沒增加,只是更懂 EFI 而已。
原创粉丝点击