Решено: Связь процесса с ядром (Двусторонний обмен)
Модератор: Модераторы разделов
-
- Сообщения: 136
Решено: Связь процесса с ядром
Есть что-нибудь для того, чтобы связать процесс в юзерспейсе с модулем в ядре, с возможностью двухстороннего обмена? Писать в /dev/xxx не пойдет, поскольку, как выяснилось, ядро не может послать процессу сигнал, чтобы уведомить его о том, что оно чего-то от него хочет.
Все погибнут при гравитационном коллапсе, Маша...
---
Затрать 5 минут в неделю. Сделай OpenOffice.org лучше http://community.i-rs.ru/index.php/topic,3241.0.html
---
Затрать 5 минут в неделю. Сделай OpenOffice.org лучше http://community.i-rs.ru/index.php/topic,3241.0.html
-
- Сообщения: 694
Re: Решено: Связь процесса с ядром
Ну ядро может, например, разбудить поток, а он что-нибудь сделает.
-
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
Re: Решено: Связь процесса с ядром
Ivanhoe, использовать netlink и интерфейс BSD-сокетов.
-
- Сообщения: 136
Re: Решено: Связь процесса с ядром
Zeus, ммм, интересно. Плиз, по подробнее.
serzh-z, я о netlink как раз задумывался. Просто подумал, что может быть есть что-то более идеологически верное
serzh-z, я о netlink как раз задумывался. Просто подумал, что может быть есть что-то более идеологически верное
Все погибнут при гравитационном коллапсе, Маша...
---
Затрать 5 минут в неделю. Сделай OpenOffice.org лучше http://community.i-rs.ru/index.php/topic,3241.0.html
---
Затрать 5 минут в неделю. Сделай OpenOffice.org лучше http://community.i-rs.ru/index.php/topic,3241.0.html
-
- Сообщения: 694
Re: Решено: Связь процесса с ядром
Ну у меня в этой области познания с одной стороны сугубо теоретические:
изменить состояние потока может только ядро.
Если надо - "усыпить", когда надо - "разбудить".
Обычно всё это происходит с использованием объектов ядра.
Что-то вот такое у меня в голове залежалось.
с другой стороны, практически я использовал только усыпление потока драйвером при неготовности данных функциями:
interruptible_sleep_on ...
и
wake_up_interruptible ...
Думаю для формирования более адекватной картины лучше поискать информацию про программирование драйверов и ядра вообще.
-
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
Re: Решено: Связь процесса с ядром
Не вижу ничего неверного в том, чтобы ожидать данных в сокете netlink, можно открыть файл в /dev/ и ожидать данных от него, модуль ядра может туда писать данные, когда захочет оповестить процесс о чём-то. То что предлагает Зевс, потребует изобретения велосипеда и добавления системного вызова в ядро...
-
- Сообщения: 136
Re: Решено: Связь процесса с ядром
Ок, спасибо. Тогда буду курить в сторону netlink.
Все погибнут при гравитационном коллапсе, Маша...
---
Затрать 5 минут в неделю. Сделай OpenOffice.org лучше http://community.i-rs.ru/index.php/topic,3241.0.html
---
Затрать 5 минут в неделю. Сделай OpenOffice.org лучше http://community.i-rs.ru/index.php/topic,3241.0.html
-
- Сообщения: 636
- ОС: Debian GNU/Linux
Re: Решено: Связь процесса с ядром
Ivanhoe писал(а): ↑30.07.2007 12:57Есть что-нибудь для того, чтобы связать процесс в юзерспейсе с модулем в ядре, с возможностью двухстороннего обмена? Писать в /dev/xxx не пойдет, поскольку, как выяснилось, ядро не может послать процессу сигнал, чтобы уведомить его о том, что оно чего-то от него хочет.
Я в ядрёном программировании не силён, но не понимаю, почему ядро не может уведомить процесс через /dev/something (а ещё лучше через /sys/something) ? Процесс ждёт с помощью какого-нибудь select-а, потом читает и понимает, что от него хотят. По-моему все так делают.
-
- Сообщения: 136
Re: Решено: Связь процесса с ядром
v04bvs, а разве процесс при этом не сожрет все ресурсы при постоянном обращении к /dev/something?
Все погибнут при гравитационном коллапсе, Маша...
---
Затрать 5 минут в неделю. Сделай OpenOffice.org лучше http://community.i-rs.ru/index.php/topic,3241.0.html
---
Затрать 5 минут в неделю. Сделай OpenOffice.org лучше http://community.i-rs.ru/index.php/topic,3241.0.html
-
- Сообщения: 694
-
- Сообщения: 136
Re: Решено: Связь процесса с ядром
Спать в смысле "спать сам по себе" или "спать по sleep()" ?
Все погибнут при гравитационном коллапсе, Маша...
---
Затрать 5 минут в неделю. Сделай OpenOffice.org лучше http://community.i-rs.ru/index.php/topic,3241.0.html
---
Затрать 5 минут в неделю. Сделай OpenOffice.org лучше http://community.i-rs.ru/index.php/topic,3241.0.html
-
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
-
- Сообщения: 694
Re: Решено: Связь процесса с ядром
Так как написал v04bvs: процесс будет спать заблокированным на select'е.
-
- Сообщения: 136
Re: Решено: Связь процесса с ядром
Хм... тоже вариант. *пошел читать ман*
Все погибнут при гравитационном коллапсе, Маша...
---
Затрать 5 минут в неделю. Сделай OpenOffice.org лучше http://community.i-rs.ru/index.php/topic,3241.0.html
---
Затрать 5 минут в неделю. Сделай OpenOffice.org лучше http://community.i-rs.ru/index.php/topic,3241.0.html
-
- Сообщения: 116
- ОС: RFRemix 18
Re: Решено: Связь процесса с ядром
Ivanhoe писал(а): ↑30.07.2007 12:57Есть что-нибудь для того, чтобы связать процесс в юзерспейсе с модулем в ядре, с возможностью двухстороннего обмена? Писать в /dev/xxx не пойдет, поскольку, как выяснилось, ядро не может послать процессу сигнал, чтобы уведомить его о том, что оно чего-то от него хочет.
Есть вариант - погугли eventfd(). Псевдо-файлдескриптор специально для оповещения юзерских процессов о событи ядра. Всё делается достаточно просто - по ioctl() драйвер возвращает дескриптор события, юзерский процесс ждёт на нём с помощью операции типа select(), poll(), epoll(). Обрабатывать можно множество событий параллельно.
ПС. посмотрел дату. ого. темка то слегка неактуальна ))
-
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
Re: Решено: Связь процесса с ядром
/me представил, как Ivanhoe, без малого два года, пытается найти решение для связи процесса с ядром...