Драйвер устройства Linux использует младшие номера - PullRequest
2 голосов
/ 28 марта 2012

Из файла /proc/devices можно увидеть основной номер драйвера устройства. Есть ли способ перечислить вспомогательные номера, поддерживаемые драйвером устройства? У меня нет источников, мне нужен способ получить информацию из работающего Linux.

Ответы [ 2 ]

0 голосов
/ 28 марта 2012

Linux отслеживает, в каких регионах выделен определенный драйвер. В противном случае совместное использование старшего номера, как это происходит в областях vc, serial (maj 4) и ttyaux (maj 5), было бы невозможно без дополнительного модуля диспетчеризации или чего-то подобного. В fs/char_dev.c вы найдете

kobj = kobj_lookup(cdev_map, inode->i_rdev, &idx);

так что, действительно, Linux ищет объекты cdev (основной, второстепенный), а не только (основной).

См. /sys/dev/char/, например:

lrwxrwxrwx 1 root root 0 Mar 27 17:34 4:62 -> ../../devices/virtual/tty/tty62
lrwxrwxrwx 1 root root 0 Mar 27 17:34 4:63 -> ../../devices/virtual/tty/tty63
lrwxrwxrwx 1 root root 0 Mar 27 17:34 4:64 -> ../../devices/pnp0/00:06/tty/ttyS0
lrwxrwxrwx 1 root root 0 Mar 27 17:34 4:65 -> ../../devices/platform/serial8250/tty/ttyS1
lrwxrwxrwx 1 root root 0 Mar 27 17:34 4:66 -> ../../devices/platform/serial8250/tty/ttyS2
...
lrwxrwxrwx 1 root root 0 Mar 27 17:34 4:79 -> ../../devices/platform/serial8250/tty/ttyS15

Поскольку я настроил свое ядро ​​на CONFIG_SERIAL_8250_NR_UARTS=16, CONFIG_SERIAL_8250_RUNTIME_UARTS=16, я буду видеть записи вплоть до ttyS15 в каталоге sysfs. Это то, что драйвер устройства зарегистрировал в результате моих действий по настройке. Это может быть меньше, чем зарезервировано в соответствии с Documentation/devices.txt.

0 голосов
/ 28 марта 2012

Linux не отслеживает это.
Когда open вызывается с младшим номером, этот номер передается драйверу устройства.Затем драйвер может делать с ним все, что пожелает.

Данный драйвер может реализовывать таблицу второстепенных чисел, каждое из которых указывает на структуру состояния.Но он может справиться с этим иначе.

...