LINUX.ORG.RU

driver & user programm


0

0

Hi! подскажите плиз:

1) как можно уведомить пользовательскую программу из драйвера о том, что пришло прерывание и пришло время решаться на какие-либо действия )

2) Возможно ли пользовательской программе (а не драйверу) обрабатывать прерывание от устройства?

3) Возможна ли ситуация, когда драйвер передает управление пользовательской функции (callback???)?

anonymous

RE:

>как можно уведомить пользовательскую программу из драйвера о том, что пришло прерывание и пришло время решаться на какие-либо действия )
Да, просто нужно будить poll очереди.

>Возможно ли пользовательской программе (а не драйверу) обрабатывать прерывание от устройства?
bottom-half - нет, а top-half - на здоровье.

>Возможна ли ситуация, когда драйвер передает управление пользовательской функции (callback???)?
Нет. Это связано с понятием текущего контекста. Не может быть одновременно два user-space контекста. Асинхронно можно просто послать сигнал.

Murr ★★
()
Ответ на: RE: от Murr

к

Вопрос по ходу к Murr, как же ядро вызывает обработчик сигналов, если не может вызвать calLback, есть мнение, что при переходе из kernel mode в user mode, если процессу пришёл сигнал в стек загоняется адрес одработчика и делается возврат, при этом происходит переход в обработчик, а после его завершения возврат в основную программу. Таким же образом можно сделать callback, правда стоит ли парится, если есть обычный синхронный ввод/вывод, сигналы и пр.

anonymous
()
Ответ на: к от anonymous

RE:

>Таким же образом можно сделать callback
А что ты называешь callback?

Я это слово употребляю для прямого вызова (в отличие от отложенного вызова вроде сигналов или APC).

>Таким же образом можно сделать
"Таким же" образом это и будет сигнал. Или ты имеешь в виду запихать свою точку возврата? Так в Linux вроде нет generic функций, которые пихают точку возврата.

Murr ★★
()
Ответ на: RE: от Murr

RE:

... а реализовывать для каждого ядра и каждой аппаратной платформы сие - мазохизм.

Murr ★★
()
Ответ на: RE: от Murr

К

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

anonymous
()

спасибо за подсказки! )

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