Решено: Связь процесса с ядром (Двусторонний обмен)

Взгляд изнутри

Модератор: Модераторы разделов

Ответить
Аватара пользователя
Ivanhoe
Сообщения: 136

Решено: Связь процесса с ядром

Сообщение Ivanhoe »

Есть что-нибудь для того, чтобы связать процесс в юзерспейсе с модулем в ядре, с возможностью двухстороннего обмена? Писать в /dev/xxx не пойдет, поскольку, как выяснилось, ядро не может послать процессу сигнал, чтобы уведомить его о том, что оно чего-то от него хочет.
Все погибнут при гравитационном коллапсе, Маша...
---
Затрать 5 минут в неделю. Сделай OpenOffice.org лучше http://community.i-rs.ru/index.php/topic,3241.0.html
Спасибо сказали:
Аватара пользователя
Zeus
Сообщения: 694

Re: Решено: Связь процесса с ядром

Сообщение Zeus »

Ну ядро может, например, разбудить поток, а он что-нибудь сделает.
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Контактная информация:

Re: Решено: Связь процесса с ядром

Сообщение serzh-z »

Ivanhoe, использовать netlink и интерфейс BSD-сокетов.
Спасибо сказали:
Аватара пользователя
Ivanhoe
Сообщения: 136

Re: Решено: Связь процесса с ядром

Сообщение Ivanhoe »

Zeus, ммм, интересно. Плиз, по подробнее.

serzh-z, я о netlink как раз задумывался. Просто подумал, что может быть есть что-то более идеологически верное :)
Все погибнут при гравитационном коллапсе, Маша...
---
Затрать 5 минут в неделю. Сделай OpenOffice.org лучше http://community.i-rs.ru/index.php/topic,3241.0.html
Спасибо сказали:
Аватара пользователя
Zeus
Сообщения: 694

Re: Решено: Связь процесса с ядром

Сообщение Zeus »

Ivanhoe писал(а):
30.07.2007 15:11
Zeus, ммм, интересно. Плиз, по подробнее.

Ну у меня в этой области познания с одной стороны сугубо теоретические:

изменить состояние потока может только ядро.
Если надо - "усыпить", когда надо - "разбудить".
Обычно всё это происходит с использованием объектов ядра.
Что-то вот такое у меня в голове залежалось.

с другой стороны, практически я использовал только усыпление потока драйвером при неготовности данных функциями:

interruptible_sleep_on ...
и
wake_up_interruptible ...


Думаю для формирования более адекватной картины лучше поискать информацию про программирование драйверов и ядра вообще.
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Контактная информация:

Re: Решено: Связь процесса с ядром

Сообщение serzh-z »

Ivanhoe писал(а):
30.07.2007 15:11
Просто подумал, что может быть есть что-то более идеологически верное
Не вижу ничего неверного в том, чтобы ожидать данных в сокете netlink, можно открыть файл в /dev/ и ожидать данных от него, модуль ядра может туда писать данные, когда захочет оповестить процесс о чём-то. То что предлагает Зевс, потребует изобретения велосипеда и добавления системного вызова в ядро...
Спасибо сказали:
Аватара пользователя
Ivanhoe
Сообщения: 136

Re: Решено: Связь процесса с ядром

Сообщение Ivanhoe »

Ок, спасибо. Тогда буду курить в сторону netlink.
Все погибнут при гравитационном коллапсе, Маша...
---
Затрать 5 минут в неделю. Сделай OpenOffice.org лучше http://community.i-rs.ru/index.php/topic,3241.0.html
Спасибо сказали:
v04bvs
Сообщения: 636
ОС: Debian GNU/Linux

Re: Решено: Связь процесса с ядром

Сообщение v04bvs »

Ivanhoe писал(а):
30.07.2007 12:57
Есть что-нибудь для того, чтобы связать процесс в юзерспейсе с модулем в ядре, с возможностью двухстороннего обмена? Писать в /dev/xxx не пойдет, поскольку, как выяснилось, ядро не может послать процессу сигнал, чтобы уведомить его о том, что оно чего-то от него хочет.

Я в ядрёном программировании не силён, но не понимаю, почему ядро не может уведомить процесс через /dev/something (а ещё лучше через /sys/something) ? Процесс ждёт с помощью какого-нибудь select-а, потом читает и понимает, что от него хотят. По-моему все так делают.
Спасибо сказали:
Аватара пользователя
Ivanhoe
Сообщения: 136

Re: Решено: Связь процесса с ядром

Сообщение Ivanhoe »

v04bvs, а разве процесс при этом не сожрет все ресурсы при постоянном обращении к /dev/something?
Все погибнут при гравитационном коллапсе, Маша...
---
Затрать 5 минут в неделю. Сделай OpenOffice.org лучше http://community.i-rs.ru/index.php/topic,3241.0.html
Спасибо сказали:
Аватара пользователя
Zeus
Сообщения: 694

Re: Решено: Связь процесса с ядром

Сообщение Zeus »

Ivanhoe писал(а):
30.07.2007 23:00
v04bvs, а разве процесс при этом не сожрет все ресурсы при постоянном обращении к /dev/something?

Он будет спать.
Спасибо сказали:
Аватара пользователя
Ivanhoe
Сообщения: 136

Re: Решено: Связь процесса с ядром

Сообщение Ivanhoe »

Zeus писал(а):
30.07.2007 23:02
Ivanhoe писал(а):
30.07.2007 23:00
v04bvs, а разве процесс при этом не сожрет все ресурсы при постоянном обращении к /dev/something?

Он будет спать.

Спать в смысле "спать сам по себе" или "спать по sleep()" ?
Все погибнут при гравитационном коллапсе, Маша...
---
Затрать 5 минут в неделю. Сделай OpenOffice.org лучше http://community.i-rs.ru/index.php/topic,3241.0.html
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Контактная информация:

Re: Решено: Связь процесса с ядром

Сообщение serzh-z »

Ivanhoe писал(а):
31.07.2007 12:01
спать по sleep()
По wait() разумеется...
Спасибо сказали:
Аватара пользователя
Zeus
Сообщения: 694

Re: Решено: Связь процесса с ядром

Сообщение Zeus »

Ivanhoe писал(а):
31.07.2007 12:01
Zeus писал(а):
30.07.2007 23:02
Ivanhoe писал(а):
30.07.2007 23:00
v04bvs, а разве процесс при этом не сожрет все ресурсы при постоянном обращении к /dev/something?

Он будет спать.

Спать в смысле "спать сам по себе" или "спать по sleep()" ?

Так как написал v04bvs: процесс будет спать заблокированным на select'е.
Спасибо сказали:
Аватара пользователя
Ivanhoe
Сообщения: 136

Re: Решено: Связь процесса с ядром

Сообщение Ivanhoe »

Хм... тоже вариант. *пошел читать ман*
Все погибнут при гравитационном коллапсе, Маша...
---
Затрать 5 минут в неделю. Сделай OpenOffice.org лучше http://community.i-rs.ru/index.php/topic,3241.0.html
Спасибо сказали:
Аватара пользователя
stari_maček
Сообщения: 116
ОС: RFRemix 18

Re: Решено: Связь процесса с ядром

Сообщение stari_maček »

Ivanhoe писал(а):
30.07.2007 12:57
Есть что-нибудь для того, чтобы связать процесс в юзерспейсе с модулем в ядре, с возможностью двухстороннего обмена? Писать в /dev/xxx не пойдет, поскольку, как выяснилось, ядро не может послать процессу сигнал, чтобы уведомить его о том, что оно чего-то от него хочет.


Есть вариант - погугли eventfd(). Псевдо-файлдескриптор специально для оповещения юзерских процессов о событи ядра. Всё делается достаточно просто - по ioctl() драйвер возвращает дескриптор события, юзерский процесс ждёт на нём с помощью операции типа select(), poll(), epoll(). Обрабатывать можно множество событий параллельно.

ПС. посмотрел дату. ого. темка то слегка неактуальна ))
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Контактная информация:

Re: Решено: Связь процесса с ядром

Сообщение serzh-z »

stari_maček писал(а):
25.05.2009 10:12
Есть вариант - погугли eventfd().
/me представил, как Ivanhoe, без малого два года, пытается найти решение для связи процесса с ядром...
Спасибо сказали:
Ответить