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

 
 
> А как синхронизировать событие в драйвере и юзерский код?
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
Ответов
DASM
сообщение Jan 23 2014, 13:20
Сообщение #2


Гуру
******

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



O_NONBLOCK это уже как ты сам ф-ции read write опишешь, а у меня их вообще нет. Ну вобщем мог бы, конечно, как и предполагал, использовать select, реализовав метод poll, но сделал еще проще - парочкой DECLARE_WAIT_QUEUE_HEAD и wait_event/wake_up(&dma_done_event);
То есть мой ioctl , который проверяет готовноть DMA - просто стал блокирующим и усыплет поток, пока ДМА не будет готова, что мне, в моем очень простом случае, и надо было.
Go to the top of the page
 
+Quote Post
SM
сообщение Jan 23 2014, 13:27
Сообщение #3


Гуру
******

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



Цитата(DASM @ Jan 23 2014, 17:20) *
просто стал блокирующим и усыплет поток, пока ДМА не будет готова,


Ну так бы сразу и сказал, что это допустимо, ioctl сделать блокирующим. Я был почему-то уверен по вопросу, что это как раз недопустимо, а требуется асинхронный вызов. А так собственно все делают, на этом, к примеру v4l2 живет, ф-ция ожидания готовности очередного буфера с видео.
Go to the top of the page
 
+Quote Post



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

 


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


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