Форум на Kuban.ru (http://forums.kuban.ru/)
-   Разработка программ (http://forums.kuban.ru/f1024/)
-   -   Чтение регулярных файлов в прерываниях ядра Linux (http://forums.kuban.ru/f1024/chtenie_regulyarnyh_fajlov_v_preryvaniyah_yadra_linux-4267213.html)

NTFS_ 29.05.2013 09:49

Чтение регулярных файлов в прерываниях ядра Linux
 
Собственно, нужно как-то сделать это.

Я в курсе, что это искуссное извращение, и все, от man до google, делать это не рекомендуют. Но: нужно. Причем не в зоне module_init, а именно внутри прерывания, например, таймера.

Если в зоне init я еще могу считать файл с помощью filp_open/kernel_read, то внутри прерывания эти операции наглухо вешают ОС. Понимаю, почему.

Есть какие-то мысли?

Вариант "переделать архитектуру" не предлагать :-) Задача стоит именно так: получить содержимое регулярного файла (например, /home/user/test.dat) внутри таймера модуля ядра.

За грамотный совет готов перекинуть немного Qiwi или Yandex.Денег.

NTFS_ 29.05.2013 09:51

Потокобезопасность и защищенность особенно не интересуют. К модулю никто подключаться не будет, связей с другими модулями нет, там будет только прерывание таймера, и, возможно, вывод в /proc.

NTFS_ 29.05.2013 09:51

Короче, вполне подойдет какой-нибудь грязный небезопасный хак, за который в приличных местах побьют вениками.

dvserg 31.05.2013 15:17

Может быть стоит в обработчике прерывания запускать/контролировать результаты/останавливать некоторый процесс, выполняющий в фоне нужные действия с этим файлом? Тогда и на ожидания отработки прерывания расходы будут небольшими.

NTFS_ 31.05.2013 16:23

Пробовал, но и запустить пользовательский процесс из прерывания не удается. только обращение к демону пользовательского уровня через /proc и работает. Скорее всего, квалификации недостаточно :-(

Проблему решил иным путем (объяснил заказчику, почему так делать нельзя), но теоретический интерес к задаче все еще есть.

Какие мысли?


Текущее время: 13:34. Часовой пояс GMT +3.