iT邦幫忙

DAY 13
0

Linux kernel模組的開發系列 第 13

Device driver

最常見的 kernel module 就是 device driver了,也就是各種硬體 (顯示卡、磁碟、serial port 等等) 的驅動程式。像是在 Linux 中,在 /dev/ 目錄下的每一個檔案 (就稱為 device file),都是代表一個硬體,而使用者的程式就可以透過這些 device file 來跟硬體做溝通。譬如說,你要將資料燒錄到光碟機中,只需要將 ISO 建立到 /dev/cdrom 裡。又或者播放程式要播放音樂,就必須要跟音效卡 (/dev/sound) 做溝通,但程式本身不用去管音效卡是什麼。

在 /dev 目錄地下的 device file,都有兩個數字分別是 major number 與 minor number。用來區別不同的 driver 與個別的硬體。每個硬體設備都會有唯一的 major, minor number 組合,如果 major number 相同,代表他們使用一樣的 driver,而不同的 minor number,則連結到不同的硬體。例如下圖,表示所有的磁碟 (/dev/sd*) 的 major number 都是 8,代表他們都使用同一個驅動程式。

[root@Pomelo-14-61 ~]# ll /dev/sd*
brw-rw---- 1 root disk 8,   0 Jun 16 08:59 /dev/sda
brw-rw---- 1 root disk 8,   1 Jun 16 08:59 /dev/sda1
brw-rw---- 1 root disk 8,   2 Jun 16 08:59 /dev/sda2
brw-rw---- 1 root disk 8,   3 Jun 16 08:59 /dev/sda3
brw-rw---- 1 root disk 8,  16 Jun 16 08:59 /dev/sdb
brw-rw---- 1 root disk 8,  32 Jun 16 08:59 /dev/sdc
brw-rw---- 1 root disk 8,  48 Jun 16 08:59 /dev/sdd

上一篇
記憶體管理
下一篇
在 kernel 中註冊 driver
系列文
Linux kernel模組的開發30

尚未有邦友留言

立即登入留言