驅動程式繫結

如要為 Fuchsia 系統中的裝置提供服務,驅動程式必須繫結至代表裝置的節點驅動程式管理員會保留節點的拓撲,其中每個節點代表對系統中硬體或虛擬裝置的存取權。當驅動程式庫與節點相符時,驅動程式庫可以繫結至節點。繫結至節點後,驅動程式庫就會開始為節點代表的裝置提供服務。舉例來說,USB 鍵盤驅動程式庫可能會繫結至代表鍵盤裝置的節點。

如要確認哪些驅動程式可以繫結至哪些節點,每個驅動程式庫都會繫結規則,且每個節點都有一組節點屬性。驅動程式繫結規則說明驅動程式庫可有效運作的節點資格。當驅動程式庫程式架構嘗試將驅動程式庫與節點配對時,每個未繫結節點的屬性都會與驅動程式的繫結規則進行比較。如果節點屬性符合驅動程式的繫結規則,驅動程式庫架構會允許驅動程式庫繫結至節點。

繫結序列

Fuchsia 系統啟動時,驅動程式管理器會嘗試建構代表系統中所有硬體和虛擬裝置的節點拓撲,然後驅動程式索引會列舉系統已知的所有驅動程式。

在 Fuchsia 系統初次啟動期間,會發生以下事件:

  1. (從根節點及其驅動程式庫開始) 驅動程式管理器會要求建立新的子節點。
  2. 驅動程式管理器會要求驅動程式庫索引,找出最符合此節點屬性的驅動程式庫:
    1. 驅動程式庫索引會比較每個已知驅動程式庫繫結規則與節點屬性。
    2. 驅動程式庫索引會將相符的駕駛人網址傳回給驅動程式管理器。
  3. 驅動程式管理器會將驅動程式庫繫結至節點:
    1. 驅動程式管理器會建立 (或指派) 驅動程式庫的驅動程式代管程序。
    2. 驅動程式主機會啟動驅動程式的執行個體。
  4. 執行中的驅動程式庫可能會決定建立子節點。
    1. 系統會重複執行步驟 1 的程序。

初次執行掃描和繫結後,每次出現新驅動程式庫時 (例如將新驅動程式庫載入系統),驅動程式管理器會將拓撲中的所有未繫結節點傳送至驅動程式庫索引,以便與新驅動程式庫進行比對。當節點比對相符時,驅動程式管理器會將這個新驅動程式庫繫結至節點,驅動程式庫的執行個體會儲存於驅動程式代管程序中,而驅動程式代管程序會開始將裝置功能提供給系統中的其他 Fuchsia 元件。

如要進一步瞭解繫結規則,請參閱先前針對驅動程式庫程式架構第 1 版 (DFv1) 編寫的驅動程式繫結

主面板驅動程式庫和 USB 裝置

acpi這類裝置會透過驅動程式索引協調的一般繫結程序,與驅動程式繫結。從這個時候開始,這些驅動程式 (繫結至主面板驅動程式庫的子節點) 會動態查詢硬體以取得其他資訊。根據這項資訊,駕駛人可能會發現要新增至拓撲的新裝置。隨著發現更多裝置並介紹拓撲,這個程序就會遞迴。