Re[3]: отправка массива из драйвера
От: Pzz Россия https://github.com/alexpevzner
Дата: 05.12.22 11:55
Оценка:
Здравствуйте, reider, Вы писали:

R>Данный драйвер реализует несколько буферов DMA, в которые внешнее устройство пишет по PCI. Как только буфер наполнен, оно шлёт сообщение (прерывание). Драйвер ловит это прерывание и сообщает об этом программе работающей в user mode. Программа должна считывать данные с dma буферов драйвера и записывает в RAM. ОС Debian Linux 11


Ну логично было бы, чтобы драйвер формировал очередь уже заполненных буферов, а user space отрывал бы устройство, и read-ом содержимое этих буферов из устройства вычитывал.

При этом если данные с устройства, логически, представляют собой просто поток байтов (т.е., если пришло 100 байтов, то не важно, как они пришли, одним куском, или 50+50), то отдавать очередному read-у все, что уже накопилось и влезает в предоставленный буфер. А если это поток не байтов, а "сообщений", т.е., сохранение границ между последовательными блоками важно, то отдавать за раз одно целое сообщение, и возвращать ошибку, если оно не лезет в предоставленный буфер

Никакие сигналы при этом использовать не надо
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.