Имеем Linux. Нужно обмануть программу, которая работает с serial port:
она предполагает, что работает с неким девайсом на порту, а на самом деле
все байты от девайса и для девайса перенаправляются через TPC/IP на другую машину в сети.Я предполагаю сделать модуль ядра, связанный с байт-ориентированным устройством
в /dev/. Ну, к примеру, /dev/ttyS150 Модуль экспортирует функции чтения/записи для
этого устройства. Ну, допустим, программу обманул. /dev/ttyS150 есть, модуль есть,
а как заставить модуль перекидывать/принимать байтики через сокет на другую машину?
на уровне модулей ядра ведь нет никаких сокетов..Какие мысли?
Спасибо.
Предлагаю следующее решение (на уровне идеи).
Понадобятся модуль ядра и демон.
Демон создает сокет для ТСР-соединения и передает дескриптор сокета модулю.
Модуль перехватывает системный вызов open и ждет момента открытия устройства, например /dev/ttyS0. Если программа попытается его открыть, модуль вернет ей дескриптор сокета, и дальнейшая запись данных из программы будет осуществляться в сокет.
в большинстве случаев не нужно писать никаких драйверов, достаточно
2 программ - клиент и демон (типа mserver), а программу достаточно
заставить читать с pty, конечно, если не тербуется считывать состояние
сигналов.