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号的次要数字,否则您可能会覆盖下一个可用的主号码..这个答案有帮助

相关问题