Fuchsia 核心程式庫

本文將從依附元件鏈底部開始,說明 Fuchsia 系統中的核心程式庫。

Zircon 程式庫

libzircon

這個程式庫會定義 Zircon 系統 ABI。

libzx

libzircon 會定義 C 類型和對這些物件執行的函式呼叫。libzx 是這些項目的輕量 C++ 包裝函式。它會在 zx_handle_t 之外新增類型安全性,讓每個核心物件類型都有對應的 C++ 類型,並為這些句柄新增擁有權語意。否則,系統不會針對命名或政策提供任何意見。

如要進一步瞭解 libzx,請參閱相關說明文件

FBL

無論是在核心還是使用者空間,Zircon 的大部分內容都是以 C++ 編寫。連結 C++ 標準程式庫並不特別適合這個環境 (因為很容易發生分配、擲回例外狀況等問題,而且程式庫本身很大)。標準程式庫中包含許多實用的結構,例如型別特徵和不重複的指標,我們可以使用這些結構。不過,C++ 標準程式庫並非要像這樣分散使用。因此,我們建構了一個程式庫,提供名為 fbl 的類似結構。這個程式庫也包含標準程式庫中沒有的結構體,但對於核心和裝置驅動程式庫環境而言,這些結構體是實用的程式庫程式碼 (例如 slab 配置)。

如要進一步瞭解 FBL,請參閱總覽

FXL

FXL 是個不受平台限制的程式庫,內含基本 C++ 建構區塊,例如記錄和參照計數。FXL 會依附於 C++ 標準程式庫,但不會依附於任何 Zircon 或 Fuchsia 專屬的程式庫。我們會為目標 (Fuchsia) 和主機 (Linux、Mac) 系統建構 FXL。

一般來說,我們會嘗試使用 C++ 標準程式庫來建立基本區塊,但在某些情況下,C++ 標準程式庫可能沒有我們需要的功能 (例如功能豐富的記錄系統),或是我們需要的版本不符合我們的規格需求 (例如 std::shared_ptrfxl::RefPtr 的兩倍)。