我是设备驱动程序的初学者....
我想知道如何使用主编号和次编号从设备文件和驱动程序来定位文件操作?
答案1
如果您正在学习编写 Linux 设备驱动程序,我应该告诉您有一本关于该主题的免费电子书。
我们的答案应该不仅仅提供链接。以下是相关摘录。
crw-rw-rw- 1 root root 1, 3 Apr 11 2002 null crw------- 1 root root 10, 1 Apr 11 2002 psaux crw------- 1 root root 4, 1 Oct 28 03:04 tty1 crw-rw-rw- 1 root tty 4, 64 Apr 11 2002 ttys0 crw-rw---- 1 root uucp 4, 65 Apr 11 2002 ttyS1 crw--w---- 1 vcsa tty 7, 1 Apr 11 2002 vcs1 crw--w---- 1 vcsa tty 7, 129 Apr 11 2002 vcsa1 crw-rw-rw- 1 root root 1, 5 Apr 11 2002 zero
传统上,主编号标识与设备关联的驱动程序。例如,/dev/null 和 /dev/zero 都由驱动程序 1 管理,而虚拟控制台和串行终端由驱动程序 4 管理;类似地,vcs1 和 vcsa1 设备都由驱动程序 7 管理。现代 Linux 内核允许多个驱动程序共享主编号,但您看到的大多数设备仍然按照一个主编号一个驱动程序的原则组织。
内核使用次要编号来确定所引用的设备。根据驱动程序的编写方式(我们将在下面看到),您可以从内核获取指向设备的直接指针,也可以自己使用次要编号作为本地设备数组的索引。无论哪种方式,内核本身几乎对次要编号一无所知,只知道它们引用驱动程序实现的设备。