Я новичок в разработке драйвера Linux.Как использовать модель устройства Linux и/sys?
Традиционно, если я хочу, чтобы создать символьное устройство, мне просто нужно реализовать read
write
и ioctl
функции, и зарегистрировать его register_chrdev_region
с соответствующими Major device ID
. Затем используйте mknod
, чтобы создать файл устройства с этим номером Major device ID
. Затем вызовите read
write
open
в пространстве пользователя, после чего вызовите соответствующие функции по ядру.
Но сейчас я изучаю Linux device model
и sys filesystem
, который добавлен в ядро 2.6. Мне сказали, что, если это возможно, не используйте /dev filesystem
, так как Linux теперь имеет хорошую модель для обработки устройства и driver.This спутать меня, так что я буду суммировать мое замешательство в некоторые вопросы:
- Как Я создаю устройство char в/sys? Чтобы быть более конкретным, как мне создать нулевое устройство, как
/dev/null
? - Как мне вызвать функцию драйвера устройства char из пользовательского пространства?
- Я слышал, что
udev
основан наsys filesystem
, чтобы создать файл устройства в/dev
. Зачем? Так как мне сказали: «Если возможно, не используйте/dev filesystem
», почемуudev
использовать/sys
для создания файла в/dev
? - Есть ли в файле
sys
какие-либо идеи, такие какchar device file
илиblock device
? - В
/dev
,open
write
из пользовательского пространства, наконец, сопоставить функции вfile operation structure
определенных мною, то какие функции будут вызываться при открытии или записывать файлы в/ssy
?
Третий пункт, который вы упомянули, касается меня. Что значит «когда устройство появляется»? После того, как я назову 'register_chrdev_region'' cdev_init' и 'cdev_add', я могу получить информацию из' cat/proc/devices', но кажется, что ничего не происходит в '/ sys'. Я не могу найти какую-либо информацию своего устройства в '/ sys/dev/char' – demonguy
Я улучшил свой ответ в точке 3. в любом случае, когда вы выполняете' device_create() ', и если вы этого не делаете, сделайте это :) После случайного примера из Интернета http://www.opensourceforu.com/2011/04/character-device-files-creation-operations/ – Federico
Спасибо, Это именно то, что я хочу! – demonguy