Старший номер идентифицирует используемый драйвер устройства, младший номер указывает, какое устройство.Например, если у вас есть несколько разделов, каждый из них получает свой собственный второстепенный:
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
В любом случае, когда файл устройства открывается, ядро будет использоватьстарший номер, чтобы определить, какой модуль будет обрабатывать файл и передать младший в метод open()
структуры struct file_operations
, зарегистрированной в register_chrdev()
.