到 /dev 資料夾底下,使用 ls -l 就可得到各個 device node的資訊
以 ppp 這個 device node為例,ls -l 輸出如下
crw------- 1 root root 108, 0 Apr 21 12:46 ppp
前面的 permission field 中,第一個字元 c 表示這個 device 是 char device
接下來介於 Group name 之後,Modification date 之前
就是 ppp 這個 device 的 (major number, minor number) 資訊 108,0
有了 device node 與 (major,minor) 之間關係的觀念後
接下來就來探討 device driver 和 (major,minor) 有什麼樣的關係
關係圖:device node --- (major,minor) --- device driver
恰巧,這個關係也就是為什麼 kernel 能正確找到 device 其所有的 driver 的原因
答案很簡單
device driver 需要向 kernel 註冊其所屬 device 的 (major,minor) pair
接下來就來解釋為什麼會有(major,minor)這樣的資訊存在
在系統中新增一個硬體,許多環節彼此相扣
- hardware
- driver
- Linux OS 中配給硬體的 dev node (在 /dev 底下)
driver 向 kernel 註冊一些 handler software 以及一些 hardware 資源 (io ports,etc)
好讓 kernel 得知此 hardware 的存在,並且接受此 hardware 的 interrupt
在 /dev 底下需要替這個 hardware 新建一個 device node 好讓 kernel 可以使用它
但這項工作不是 driver 的 job
因此需要手動建立這個 device node
而 device node 的 (major,minor) 資訊
需要和 driver 中向 kernel 註冊的 (major,minor) 一樣
因此 kernel 就可經由 (major,minor) 搭建起來的橋樑找到 hardware 和 driver 的關連
也就是此關係圖:device node --- (major,minor) --- device driver
沒有留言:
張貼留言