Почему я должен вызывать mknod извне, а не непосредственно в моем драйвере?

Прочитав все книги / статьи / учебные пособия / примеры на драйверах alloc_chrdev_region() устройств, которые я смог найти, они все освещают, как получить большое число в моем коде драйвера, и все говорят, что я делаю это динамически, вызывая alloc_chrdev_region() . Чтобы создать фактический узел устройства, все они говорят мне, что я вызываю mknod вне кода драйвера вручную или в скрипте. Одна ссылка хочет, чтобы мой водитель напечатал основной номер. Другой хочет, чтобы я использовал awk on /proc/devices чтобы найти основное число. Существует упоминание функции mknod() , но она, по-видимому, предназначена для использования в коде userland.

Мне явно не хватает чего-то, так как я не понимаю, почему у моего драйвера нет возможности быть автономным, т. modprobe my_driver Я делаю modprobe my_driver и заканчиваю, скажем, /dev/my_driver созданный без необходимости делать что-либо остальное.

2 Solutions collect form web for “Почему я должен вызывать mknod извне, а не непосредственно в моем драйвере?”

Командная пара device_create и class_create делают трюк в Linux. Проверьте https://stackoverflow.com/questions/5970595/create-a-device-node-in-code

Unix традиционно придерживается традиции «механизм, а не политика». В случае драйверов устройств это означает, что идентификатор драйвера в ядре – это только номер основного / младшего устройства. Именование устройства («политика *») с использованием mknod оставлено в пространстве пользователя.

  • Как создаются файлы Linux / dev?
  • В чем разница между BAT0 и ADP0 на ядре linux?
  • Являются ли файлы устройств реализованы драйверами устройств или ядрами ОС?
  • Привязка драйвера устройства I2C
  • Заголовок PCI в моем ноутбуке отличается от PCI-заголовка free-электронов
  • Как отношение / dev / fd относится к / proc / self / fd /?
  • Что такое контроллер устройства и где он находится между ядром и устройством?
  • Что происходит под капотом, когда некоторые данные отправляются / получаются на uart (или аналогичном)?
  • Как Linux различает реальные и неиспользуемые (например: устройства) файлы?
  • Как найти устройство, чей основной идентификатор - «fd»,
  • Linux и Unix - лучшая ОС в мире.