Процедура регистрации драйвера устройства Linux

Я новичок в Linux, пытаюсь понять модель устройства Linux. Я просматривал кодовую базу Linux 3.1.6, особенно часть драйвера, и обнаружил, что

  1. некоторые из драйверов использовали (например, устройство i2c-bus: linux-3.1.6 / drivers / i2c / i2c-dev.c) * register_chrdev () * и
  2. несколько других (например, pci bus: linux-3.1.6 / drivers / pci / bus.c) использовали * device_register () *.

Мой вопрос: когда использовать register_chrdev (да, я знаю это для символьного устройства, но почему бы не использовать device_register) и device_register?

Зависит ли это от того, где разработчик драйвера хочет, чтобы его устройство / драйвер было указано в списке, например devfs vs sysfs? Или интерфейс выставлен в пользовательское пространство для доступа к устройству?


person Shash316    schedule 30.12.2011    source источник


Ответы (2)


Одна функция регистрирует ассоциацию символьного устройства (подключение основных: второстепенных к вашей функции), другая просто создает, так сказать, абстрактное устройство объект (только). Эти два понятия дополняют друг друга. Объект устройства используется для генерации события, так что udev может, если существует также зарегистрированная ассоциация cdev, создать узел в /dev. (Сравните, например, с drivers/char/misc.c.)

person jørgensen    schedule 30.12.2011
comment
Спасибо за ответ. Однако после просмотра пары онлайн-сообщений кажется, что API-интерфейсы register_chr / blk / net / dev будут устаревшими. то есть sysfs заменит devfs. - person Shash316; 02.01.2012
comment
devfs уже нет более 6 лет, sysfs не является заменой devfs (по крайней мере, он не оказался таковым), register_chrdev не исчез и не устарел, и если вы посмотрите на / dev, в настоящее время он обычно реализуется с использованием мода tmpfs. Единственное, что устарело, - это те онлайн-сообщения, которые вы читаете. - person jørgensen; 02.01.2012

Посмотрите, когда вы регистрируете устройство как символьное, происходит следующее:

Основной номер дается в соответствии. Если вы используете какое-либо устройство в зависимости от функциональности, регистрация которого основана на символьном устройстве (например, tty, ввод и т. Д.), Тогда у них будет соответствующий основной номер. Вот почему сказано, что не назначайте старший номер статически, если не уверены.

И

Есть определенные файловые операции, которые соответствуют операциям, которые могут выполняться только на символьных устройствах.

Спросите, есть ли какие-либо вопросы.

person shingaridavesh    schedule 27.10.2012