日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

linux 硬件抽象,Linux 内核硬件抽象

發布時間:2025/4/17 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux 硬件抽象,Linux 内核硬件抽象 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我們結束 PCI 的討論, 通過快速看一下系統如何處理在市場上的多種 PCI 控制器. 這只 是一個信息性的小節, 打算來展示給好奇的讀者, 內核的面向對象分布如何向下擴展到最 低層.

用來實現硬件抽象的機制是通常的包含方法的結構. 它是一個很強功能的技術, 只添加最 小的解引用一個指針的開銷到正常的函數調用開銷當中. 在 PCI 管理的情況下, 唯一的 硬件相關的操作是讀和寫配置寄存器的那些, 因為在 PCI 世界中所有其他的都通過直接 讀和寫 I/O 和內存地址空間來完成, 并且那些是在 CPU 的直接控制之下.

因此, 配置寄存器存取的相關的結構只包含 2 個成員:

struct pci_ops

{

int (*read)(struct pci_bus *bus, unsigned int devfn, int where, int size, u32 *val); int (*write)(struct pci_bus *bus, unsigned int devfn, int where, int size, u32 val);

};

這個結構定義在 并且被 drivers/pci/pci.c 使用, 這里定義了實際的公 共函數.

作用于 PCI 配置空間的這 2 個函數有更大的開銷, 比解引用一個指針; 由于代碼的面向 對象特性, 它們使用層疊指針, 但是操作中開銷不是一個問題, 這些操作很少被進行并且 從不處于速度-關鍵的路徑中. pci_read_config_byte(dev, where, val)的實際實現, 例 如, 擴展為:

dev->bus->ops->read(bus, devfn, where, 8, val);

系統中各種 PCI 總線在系統啟動時被探測, 并且此時 struct pci_bus 項被創建并且和 它們的特性所關聯, 包括 ops 字節.

通過"硬件操作"數據結構來實現硬件抽象在 Linux 內核中是典型的. 一個重要的例子是 struct alpha_machine_vector 數據結構. 它定義于 和負責任 何可能的跨不同基于 Alpha 的計算機的改變.

[40] 一些體系也顯示 PCI 域信息在 /proc/pci 和 /proc/bus/pci 文件.

[41] 實際上, 那個配置不限定在系統啟動時; 可熱插拔的設備, 例如, 在啟動時不可用并且

相反在之后出現. 這里的要點是設備啟動必須不改變 I/O 或者內存區的地址.

[42]

你將在設備自己的硬件手冊里發現它的 ID. 在文件 pci.ids 中包含一個列表, 這個文 件是 pciutils 軟件包和內核代碼的一部分; 它不假裝是完整的, 只是列出最知名的供應 商和設備. 這個文件的內核版本將來不會被包含在內核系列中.

總結

以上是生活随笔為你收集整理的linux 硬件抽象,Linux 内核硬件抽象的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。