Доброго дня!
Есть драйвер который при возникновении прерывания должен записать 1 в файл, как это лучше реализовать?
Использование /proc, насколько я понял, не подходит, потому что при чтении файла фактически происходит чтение из драйвера.
Спасибо.
запись из драйвера в файл
Модератор: Модераторы разделов
Re: запись из драйвера в файл
Не подходит. Драйвер контролирует микроконтроллер, который контролирует реле и тревожные входы устройства.
По срабатыванию реле или тревожного входа микроконтроллер генерирует прерывание, которое отлавливается драйвером. Пользователь должен сразу узнать о этом.
Сейчас это сделано через постоянный опрос, но работает не стабильно.
- Stauffenberg
- Сообщения: 2042
- Статус: ☮ PEACE ☮
- ОС: открытая и свободная
Re: запись из драйвера в файл
Ядро пишет в файл, а какая-нить GUI (плазмойд, если это KDE), работающий в user_space, может выскакивать из панели, и показывать то, что ядро скинуло в файл.
Не, не то?
Labor omnia vincit
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian Kernighan)
- stari_maček
- Сообщения: 116
- ОС: RFRemix 18
Re: запись из драйвера в файл
IMB писал(а): ↑12.04.2010 20:53
Не подходит. Драйвер контролирует микроконтроллер, который контролирует реле и тревожные входы устройства.
По срабатыванию реле или тревожного входа микроконтроллер генерирует прерывание, которое отлавливается драйвером. Пользователь должен сразу узнать о этом.
Сейчас это сделано через постоянный опрос, но работает не стабильно.
Попробуйте eventfd().
Если использовать epoll() на стороне приложения, должно получиться достаточно стабильно и без лишнего оверхеда
Re: запись из драйвера в файл
Stauffenberg писал(а): ↑13.04.2010 05:34Ядро пишет в файл, а какая-нить GUI (плазмойд, если это KDE), работающий в user_space, может выскакивать из панели, и показывать то, что ядро скинуло в файл.
Не, не то?
Общая идея правильная, но только всё это работает на автономной железке. Простейшая аналогия - пожарная сигнализация. Микроконтроллер сообщил о задымлении драйверу, драйвер выставил флаг в user-space, системный демон заметил появление флага и проинформировал пользователя.
stari_maček писал(а): ↑13.04.2010 08:34Попробуйте eventfd().
Если использовать epoll() на стороне приложения, должно получиться достаточно стабильно и без лишнего оверхеда
Замечательный механизм, но увы... Он реализован с ядра 2.6.27, а у нас 2.6.10.
- serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
- Контактная информация:
Re: запись из драйвера в файл
Как всё иначе, оказывается,.. нужно лишь сигнал в юзерспейс передать, а не писать в файл.
Как понимаю, netlink тоже в столь старом ядре отсутствует... Если уж опускаться до записи в файл и ядра, то передача сигнала *от драйвера приложению* через файл - уже сама по себе абсурдна - дисковая операция может заблокироваться. Сгорит всё, пока такой сигнал дойдёт... =)
Re: запись из драйвера в файл
Да,общая цель - передать сигнал в user-space, просто изменение в файле, как мне кажется, проще отследить.
Каким механизмом я могу передать сигнал в user-space, что бы его можно было отследить системным демоном?
Re: запись из драйвера в файл
Спасибо, ioctl используется сейчас.
Вот бы пример реализации для netlink?
Вот бы пример реализации для netlink?
Re: запись из драйвера в файл
http://www.linuxjournal.com/article/7356?page=0,0
Не менее важными и интересными являются так же комментарии к статье
Не менее важными и интересными являются так же комментарии к статье