Pull to refresh

Comments 6

Так и не понял ответа на самый простой вопрос: зачем вообще для этого понадобился kernel space код?


Userspace-пингатор watchdogd, который пингует абсолютно виртуальный kernel space /dev/watchdog, который дергает оборудование на serial port через filesystem (а по сути — userspace) API, общение с которым опять же идет через непонятно зачем встроенный в ядро мультиплексор? Почему бы просто не оставить все это в userspace?

Да вы правы, наиболее логично здесь открыть в user space сокет и передать его watchdog демону для работы, соответственно весь остальной код будет тоже в user space. Но так сложилось исторически, пока экспериментировал с line discipline и вариантами сделать псевдо-USB драйвер для всего устройства.

P.S. Действительно упустил эту мысль, когда зачищал код, сейчас поковырял стандартный watchdog и выяснил, что он ругается немного, но вполне может жить без ioctl запросов. Залил v0.2, там добавлен новый канал, который можно использовать совместно с watchdog. Последнему достаточно указать в настройках:


watchdog-device = /run/wrnd/wdt.fifo

Только нужно иметь в виду, если wrnd заверешит работу раньше чем watchdog, то будет перезагрузка. Драйвер можно использовать, но по сути он уже бесполезен.

Еще как вариант можно попробовать CUSE или UIO, тогда можно будет ioctl обрабатывать.

UIO интересный вариант, но несколько более замороченный, чем изначально использованный FUSE. А по поводу CUSE у меня серьёзные сомнения, что он жив. Последний раз слышал о нём, так давно, что даже не сразу вспомнил, что такая штука была.

На счёт CUSE был не прав, вполне актуальная технология спасибо, что напомнили.

Sign up to leave a comment.

Articles