Почему два устройства используют один и тот же номер старшего и младшего устройства? - PullRequest
6 голосов
/ 28 августа 2011

Я читаю « Драйверы устройств Linux, 3-е издание » и обнаружил что-то, чего не могу понять.

в главе 3.2, автор сказал:

Традиционно, старший номер идентифицирует драйвер, связанный с устройством.Младший номер используется ядром, чтобы точно определить, на какое устройство ссылаются.

Затем я попытался взглянуть на "ls -l / dev" и обнаружил кое-что необычное:

brw-rw----  1 root disk      1,   1 2011-08-23 23:52 ram1
brw-rw----  1 root disk      1,   2 2011-08-23 23:52 ram2
brw-rw----  1 root disk      1,   3 2011-08-23 23:52 ram3
brw-rw----  1 root disk      1,   4 2011-08-23 23:52 ram4
brw-rw----  1 root disk      1,   5 2011-08-23 23:52 ram5
...
crw-r-----  1 root kmem      1,   1 2011-08-23 23:52 mem
crw-r-----  1 root kmem      1,   4 2011-08-23 23:52 port
crw-rw-rw-  1 root root      1,   3 2011-08-23 23:52 null
crw-rw-rw-  1 root root      1,   5 2011-08-23 23:52 zero

У всех этих устройств (ram1-ram5) есть клонс тем же мажор-минором, но с другим именем и типом.Я думал, что автор говорит: « старший номер означает класс устройства, а младший номер означает индекс устройства. Поэтому Major-Minor идентифицирует уникальное устройство. "

Теперь я запутался.Почему два устройства могут использовать один и тот же мажор-минор?Какие именно номера устройств?

Поправьте меня, если я ошибся .. Заранее спасибо.

1 Ответ

9 голосов
/ 28 августа 2011

mem, port, null и zero являются символьными устройствами (о чем свидетельствует c, с которого начинается перечисление).Устройства ramN являются блочными устройствами (отсюда b).Старшие / младшие номера для блочных устройств не зависят от символьных устройств и наоборот.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...