簡介
在 Fuchsia 中,裝置驅動程式是以 ELF 共用資料庫 (DSO) 的形式實作, 會載入驅動程式主機程序驅動程式管理工具的程序 包含「裝置協調工具」,可以追蹤司機和裝置、管理 找出駕駛人、駕駛程序的建立和方向,以及 維護裝置檔案系統 (devfs),也就是應用程式具備的使用者空間 服務和應用程式 (因命名空間限制) 都能存取裝置。
司機管理工具會將裝置視為單一整合式樹狀結構。 該樹狀結構的分支 (以及子分支) 由 裝置。細分方法 驅動程式主機的整體樹狀結構是以系統政策隔離 考量安全性或穩定性方面的因素,並分配驅動程式以提高成效 理由。
裝置、驅動程式和驅動程式主機
此為 在 Qemu x86-64 上執行的 Fuchsia:
$ driver dump
[root]
<root> pid=1509
[null] pid=1509 /boot/driver/builtin.so
[zero] pid=1509 /boot/driver/builtin.so
[misc]
<misc> pid=1645
[console] pid=1645 /boot/driver/console.so
[dmctl] pid=1645 /boot/driver/dmctl.so
[ptmx] pid=1645 /boot/driver/pty.so
[i8042-keyboard] pid=1645 /boot/driver/pc-ps2.so
[hid-device-001] pid=1645 /boot/driver/hid.so
[i8042-mouse] pid=1645 /boot/driver/pc-ps2.so
[hid-device-002] pid=1645 /boot/driver/hid.so
[sys]
<sys> pid=1416 /boot/driver/bus-acpi.so
[acpi] pid=1416 /boot/driver/bus-acpi.so
[pci] pid=1416 /boot/driver/bus-acpi.so
[00:00:00] pid=1416 /boot/driver/bus-pci.so
[00:01:00] pid=1416 /boot/driver/bus-pci.so
<00:01:00> pid=2015 /boot/driver/bus-pci.proxy.so
[bochs_vbe] pid=2015 /boot/driver/bochs-vbe.so
[framebuffer] pid=2015 /boot/driver/framebuffer.so
[00:02:00] pid=1416 /boot/driver/bus-pci.so
<00:02:00> pid=2052 /boot/driver/bus-pci.proxy.so
[e1000] pid=4628 /boot/driver/e1000.so
[ethernet] pid=2052 /boot/driver/ethernet.so
[00:1f:00] pid=1416 /boot/driver/bus-pci.so
[00:1f:02] pid=1416 /boot/driver/bus-pci.so
<00:1f:02> pid=2156 /boot/driver/bus-pci.proxy.so
[ahci] pid=2156 /boot/driver/ahci.so
[00:1f:03] pid=1416 /boot/driver/bus-pci.so
方括號中的名稱指的是裝置。角括號中的名稱是 Proxy 裝置,會以「較低」驅動程式代管程序 (程序時) 隔離伺服器pid= 欄位代表處理程序物件 裝置包含的驅動程式代管程序程序 ID。路徑會指出 也就是實作裝置的驅動程式庫
以上面的 pid 1416 驅動程式代管程序為例,其中含有 pci 匯流排驅動程式 為系統中每部 PCI 裝置建立裝置。PCI 裝置 00:02:00 發生 則是情報乙太網路介面 (e1000.so)。 建立新的驅動程式代管程序 (pid 2052),並使用 PCI 00:02:00 來設定 Proxy 裝置; 且情報乙太網路驅動程式庫會載入並繫結至該驅動程式。
裝置檔案系統中不會顯示 Proxy 裝置,因此這個乙太網路裝置
會顯示為 /dev/sys/platform/pci/00:02:00/e1000
。
驅動程式架構版本 2 (DFv2)
在驅動程式庫架構第 2 版中,裝置稱為節點, 節點的樹狀結構看起來會稍有不同:
$ driver dump
[root] pid=4766 fuchsia-boot:///#meta/platform-bus.cm
[sys] pid=4766
[platform] pid=4766
[pt] pid=4766 fuchsia-boot:///#meta/platform-bus-x86.cm
[acpi] pid=4766
[pwrbtn] pid=4766 fuchsia-boot:///#meta/hid.cm
[_SB_] pid=4766
[PCI0] pid=4766
[ISA_] pid=4766
[RTC_] pid=7264 fuchsia-boot:///#meta/intel-rtc.cm
[rtc] pid=7264
[KBD_] pid=7359 fuchsia-boot:///#meta/pc-ps2.cm
[i8042] pid=7359
[i8042-keyboard] pid=7359
[i8042-mouse] pid=7359
[MOU_] pid=4766
[COM1] pid=4766
[PRES] pid=4766
[GPE0] pid=4766
[FWCF] pid=4766
[S00_] pid=4766
[S08_] pid=4766
[S10_] pid=4766
[S18_] pid=4766
[S20_] pid=4766
[S28_] pid=4766
[S30_] pid=4766
[S38_] pid=4766
[S58_] pid=4766
[HPET] pid=4766
[LNKE] pid=4766
[LNKF] pid=4766
[LNKG] pid=4766
[LNKH] pid=4766
[GSIE] pid=4766
[GSIF] pid=4766
[GSIG] pid=4766
[GSIH] pid=4766
[GFBY] pid=4766
[GFEV] pid=4766
[GFPP] pid=4766
[GFFB] pid=4766
[GFAU] pid=4766
[GFSK] pid=4766
[GFRT] pid=4766
[GFRO] pid=4766
[CPUS] pid=4766
[_TZ_] pid=4766
[PCI0] pid=4766 fuchsia-boot:///#meta/bus-pci.cm
[bus] pid=4766
[00_00_0] pid=4766
[00_00_0_] pid=4766
[00_01_0] pid=4766
[00_01_0_] pid=4766
[00_02_0] pid=4766 fuchsia-boot:///#meta/virtio_block.cm
[virtio-block] pid=4766 fuchsia-boot:///#meta/block.core.cm
[block] pid=4766 fuchsia-boot:///#meta/fvm.cm
[fvm] pid=4766
[blobfs-p-1] pid=4766 fuchsia-boot:///#meta/block.core.cm
[block] pid=4766
[data-p-2] pid=4766 fuchsia-boot:///#meta/block.core.cm
[block] pid=4766 fuchsia-boot:///#meta/zxcrypt.cm
[zxcrypt] pid=4766
[unsealed] pid=4766 fuchsia-boot:///#meta/block.core.cm
[block] pid=4766
[00_02_0_] pid=4766
[00_03_0] pid=4766
[00_03_0_] pid=4766
[00_04_0] pid=4766 fuchsia-boot:///#meta/virtio_ethernet.cm
[virtio-net] pid=4766 fuchsia-boot:///#meta/netdevice-migration.cm
[netdevice-migration] pid=4766 fuchsia-boot:///#meta/network-device.cm
[network-device] pid=4766
[00_04_0_] pid=4766
[00_05_0] pid=4766
[00_05_0_] pid=4766
[00_06_0] pid=4766
[00_06_0_] pid=4766
[00_07_0] pid=4766
[00_07_0_] pid=4766
[00_0b_0] pid=4766
[00_0b_0_] pid=4766
[00_1f_0] pid=4766
[00_1f_0_] pid=4766
[00_1f_2] pid=4766
[00_1f_2_] pid=4766
[00_1f_3] pid=4766
[00_1f_3_] pid=4766
[ram-disk] pid=4766 fuchsia-boot:///#meta/ramdisk.cm
[ramctl] pid=4766
[00_00_2e] pid=4766
[virtual-audio] pid=4766 fuchsia-pkg://fuchsia.com/virtual_audio#meta/virtual_audio_driver.cm
[virtual_audio] pid=4766
[bt-hci-emulator] pid=4766
[00_00_1b] pid=4766 fuchsia-boot:///#meta/sysmem.cm
[sysmem] pid=4766
方括號中的名稱為節點。pid= 欄位代表 裝置所屬驅動程式代管程序程序的物件 ID。網址為 繫結至節點的驅動程式庫元件資訊清單。這類節點 網址沒有驅動程式庫繫結。