Linux

一個雜項驅動程序如何控制所有這些不同的硬體?

  • October 29, 2021

我正在學習驅動程序開發,根據我讀的書,所有相同類型的 Linux 設備都具有相同的主編號由相同的驅動程序控制,例如,如果我們有一台具有多個 UART 物理埠的電腦,它們都將具有相同的主編號但是不同的次要編號,驅動程序將其解釋為不同的物理埠。我的問題是,根據這個連結,雜項設備(主要數字 10)很多,我的電腦證實了這一點,所以我的問題是一個驅動程序如何控制所有這些不同的設備(其中有很多是虛擬的)。是否存在一級重定向,當我打開設備時,核心已經註冊了這個主號碼,並且根據次號碼,核心註冊的驅動程序呼叫負責這個次號碼的驅動程序(我寫的那個),或者當我打開我註冊的驅動程序將是直接呼叫的設備文件。

是的,存在一定程度的間接性。驅動註冊為對應major的所有設備節點的驅動misc它維護一個註冊驅動程序的列表。打開設備時,第一個處理程序是misc_open,它在列表中查找匹配的驅動程序並將控制權傳遞給它。

引用自:https://unix.stackexchange.com/questions/659980