Fuchsia 核心程式庫

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

Zircon 程式庫

Libzircon

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

TODO(kulakowski) 討論這並非核心系統呼叫介面,因為 VDSO 會抽象化這個介面。

Libzx

libzircon 會定義 C 類型和函式呼叫對這些物件採取行動。libzx 是這些物件周圍的輕量 C++ 包裝函式。這會新增 zx_handle_t 以外的類型安全,讓每個核心物件類型都有對應的 C++ 類型,並為這些處理常式新增擁有權語意。否則我們不會對命名或政策發表看法。

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

FBL

許多 Zircon 都是以 C++ 編寫,包括在核心和使用者空間中。與 C++ 標準程式庫的連結對這個環境並不特別適合 (配置簡單、擲回例外狀況等,且程式庫本身較大)。標準程式庫中有一些實用的結構,例如類型特徵和不重複指標。但是,C++ 標準程式庫其實不太適合採用這種方式。我們建構的程式庫提供 名為 fbl 的類似建構這個程式庫也包含標準程式庫中沒有的建構項目,但適用於核心和裝置驅動程式庫程式環境的實用程式庫程式碼 (例如配置研究室分配)。

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

FXL 號

FXL 是獨立於平台的程式庫,內含基本的 C++ 建構模塊,例如記錄和參照計數。FXL 依附於 C++ 標準程式庫,而非任何 Zircon- 或 Fuchsia 特定程式庫。我們針對目標 (Fuchsia) 和主機 (Linux、Mac) 系統建構 FXL。

一般而言,我們會嘗試使用 C++ 標準程式庫建立基本建構區塊,但在某些情況下,C++ 標準程式庫仍缺少我們所需的項目 (例如功能完善的記錄系統),或是不符合我們要求的版本 (例如std::shared_ptrfxl::RefPtr 的兩倍)。