LINUX.ORG.RU

ввод/вывод в модуле ядра


0

1

Перечитал много документации и окончательно запутался. Стоит задача проксировать ttyUSB(N). В идеале система должны выглядеть так:
1. Создаются два устройства tty (ttyUSB_Port, ttyUSB_mon)
2. Пользователь работает через ttyUSB_Port как будто через ttyUSB(N) за счет того, что модуль получает то что пишет пользователь в порт и направляет в реальный ttyUSB. И аналогично в обратную сторону.
3. При необходимости через ttyUSB_mon можно также выполнить запрос к оборудованию, тогда модуль прервет обмен данными между ttyUSB_Port и реальным ttyUSB и в реальный ttyUSB запишет/прочитает то что получил из ttyUSB_mon.

Вроде все выглядит красиво и логично но на практике возникли сложности. Насколько я понял у модуля ядра нет доступа к библиотечным open|fopen. Возникает вопрос тогда, как открывать файл устройства из модуля и как вообще модуль может работать с файловыми устройствами? через низкоуровневый ioctl? А открыть дескриптор как?


Двух устройств не нужно.

Берешь модуль usbserial, добавляешь хитрожопый ioctl, не?

ttnl ★★★★★
()
Ответ на: комментарий от pathfinder

Спасибо за ссылку. сам что-то не нашел :) Прочитал, проникся. Мне для работы, мне не зачет получать... потому видимо действительно плохая идея работать с файлами устройств из kernel-space. Сейчас мне видится разделение функциональности между kernel и user space. B Kernel-space создаются дополнительные порты и обрабатываются данные в них. А непосредственно разруливание данных идет из userspace посредством демона.

bobych
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.