LINUX.ORG.RU

работа с символьным псевдоустройством

 , ,


0

1

Посоны, такой вопрос.

Есть модуль ядра, он регистрирует символьное псевдоустройство в системе. Процессы из него читают данные, все довольны. Т.к данные накапливаются не быстро, хочется как-то графически показать юзеру, что идет процесс работы с устройством (активити поверх всего с крутилкой, например).

Первая мысль - в модуле, в обработчиках файловых операций (open/read/release) сигнализировать в какой-нить управляющий файл о происходящих событиях. Этот файл будет читать сервис (жабовский) и управлять информационной активити (показывать/прятать/крутить_крутилку). Плюсы - ничего не придется переписывать.

Вторая мысль - не обращаться напрямую к файлу устройства, а сделать апи, которое реализовать в том же сервисе. все программы, использующие устройство переделать на использование этого апи. Минусы - писать больше.

Как бы вы это реализовали?

★★★★★

Подписаться на inotify события

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

хотелось бы еще передавать некую внутреннюю информацию, которую можно отобразить юзеру (например процент готовности устройства перед началом чтения). но спасибо, с inotify не работал, поиграюсь.

vvviperrr ★★★★★ ()
Последнее исправление: vvviperrr (всего исправлений: 1)
Ответ на: комментарий от vvviperrr

Можно вывести текущий статус через /proc или использовать ioctl для запроса статуса устройства.

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

Можешь ещё на ptrace(2) глянуть. Там вроде данные можно утаскивать.

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

Вы гландами тоже через анус оперируете?

anonymous ()

procfs

заюзал procfs с выводом статистики дуда. А далее - open(«/proc/myproc»,...); читаешь, немного sscanf() для разбора данных из proc файла и все. Лепить свой ioctl - долго и неудобно - придется вызывать ioctl у себя в прикладном коде.

А так (по хорошему) если есть файл устройства, через который идут данные и все это работает с open/read/write, но не является потомком TTY интерфейса - лучше сделать 2ой chardev для настроек и статистики 1го. Что-то вроде /dev/mydev_data 250 0 /dev/mydev_ctrl 251 0

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