реклама на сайте
подробности

 
 
> А как синхронизировать событие в драйвере и юзерский код?
DASM
сообщение Dec 11 2013, 17:51
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



Простейший вопрос вроде.. Но примитивы синхронизации работают либо в ядре, либо в юзере. Может надо использовать select над файловым дескриптором? А что в драйвере делать? Я вообще в том направлении смотрю хоть? У меня ДМА запускается по пользовательскому запросу, после чего желательно уступить поток, пробудить по окончании.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Hoodwin
сообщение Dec 12 2013, 17:34
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 881
Регистрация: 21-03-10
Из: _// \\_
Пользователь №: 56 107



Бывает сложнее, когда один драйвер должен пользоваться другим. Ну например, драйвер UART должен давать задание на DMA, причем DMA выполнен как большой независимый ресурс, а не какой-то там встроенный в UART дополнительный модуль.
Go to the top of the page
 
+Quote Post
SM
сообщение Jan 22 2014, 09:32
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(Hoodwin @ Dec 12 2013, 21:34) *
Бывает сложнее, когда один драйвер должен пользоваться другим.

Это, как раз, тупо и просто - экспортируете функцию в одном драйвере, вызываете в другом. На то он и линукс, что драйвер может вызывать драйвера так, как ему хочется, а не только через недра ОС.


DASM, глянь, как это все в libusb 1.0 сделано, асинхронные вызовы, это примерно то, о чем ты спрашиваешь.

а на сколько я сам помню, то самый простой способ - FIONBIO, или fcntl c O_NONBLOCK
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 10:30
Рейтинг@Mail.ru


Страница сгенерированна за 0.01372 секунд с 7
ELECTRONIX ©2004-2016