2010-06-07 56 views

回答

3

主號碼標識要使用的設備驅動程序,次號碼指示哪個設備。如果你有多個分區,例如,每一個都有自己的未成年人:

brw-rw---- 1 root disk 8, 0 Jun 3 20:48 /dev/sda 
brw-rw---- 1 root disk 8, 1 Jun 3 20:48 /dev/sda1 
brw-rw---- 1 root disk 8, 2 Jun 3 20:48 /dev/sda2 

次要0在這種情況下,原始的驅動,次要1是分區1,次2分2等並不是所有的設備都使用0作爲特殊情況,但是。在串行設備從0開始其編號,其中/dev/tty0只是第一(虛擬)終端系統上的設備:

crw--w---- 1 root tty 4, 0 Jun 3 20:48 /dev/tty0 
crw------- 1 root root 4, 1 Jun 3 20:50 /dev/tty1 
crw------- 1 root root 4, 2 Jun 3 20:50 /dev/tty2 
crw------- 1 root root 4, 3 Jun 3 20:50 /dev/tty3 

在任一事件中,當設備的文件被打開,內核將使用主號碼,以確定哪個模塊將處理該文件,並將該未成年人傳遞給在register_chrdev()中註冊的struct file_operations結構的open()方法。

+0

我正在閱讀的書說'firstminor應該是要求使用的第一個次要號碼;它通常在函數int alloc_chrdev_region(dev_t * dev,unsigned int firstminor,unsigned int count,char * name)中爲0;',設備通常如何爲0? – httpinterpret 2010-06-07 15:46:09

+0

我已經更新了覆蓋次要0的答案。 – Hudson 2010-06-07 15:51:59

+0

磁盤通常不會被編號爲0,但對於其他設備,第一個設備爲0:/ dev/rfcomm0,/ dev/fd0,/ dev/lp0。 .. – Piskvor 2010-06-07 15:56:58

0

與在C語言中一樣,從0開始計數......它可能是一種遵循驅動程序編寫者的約定...畢竟Linux中的所有內容都基於C或某種程度上C++,它只是一個編號計劃..你也可以開始命名您的設備從0到255之間的任何數字,但請小心不要越過255號的次要數字,否則您可能會覆蓋下一個可用的主號碼..這個答案有幫助

相關問題