Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: получение данных от драйвера
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > Linux
Dubov
Есть задача реализовать приём данных от драйвера. Драйвер периодически сообщает, что данные готовы (каждые 100 сэмплов) и приложение должно их забирать.
Боюсь такого случая: драйвер скажет, что есть смплы, но приложение не отреагирует сразу и пропустит несколько пачек сэмплов. Понятно, что в драйвере можно сделать буфер побольше, чтобы данные не потерялись, но как в приложении наверстать упущенное если неуспели вовремя? какие механизмы можно применить?
andrewlekar
Сделать двойной буфер. Один заполняется - драйвер сигнализирует приложению и переключается на другой. И так по кругу. Если приложение не успеет обработать буфер до следующего переключения, то ничего особо не сделать.
Zelepuk
Цитата(andrewlekar @ Aug 1 2012, 08:44) *
Сделать двойной буфер. Один заполняется - драйвер сигнализирует приложению и переключается на другой. И так по кругу. Если приложение не успеет обработать буфер до следующего переключения, то ничего особо не сделать.

Я хочу написать драйвер для ADE7880 и тоже опасаюсь, что данные могут теряться, если линукс не успеет отреагировать. Думаю просто можно сделать буфер побольше в драйвере, но непонятно как в случае пропуска данных по вине простоя линукса, искать пропущенные фрагменты? Есть ли какие-либо методы для "запоминания" места последнего чтения из буфера драйвера?
Idle
Цитата(Zelepuk @ Aug 1 2012, 23:51) *
Есть ли какие-либо методы для "запоминания" места последнего чтения из буфера драйвера?

так в методе read устройства и прибавлять к указателю прочитанное количество байт, указатель хранить в device private data, не вижу в чём здесь отличие от случая, когда данные успевают начитываться

а по теме треда, как наверстать упущенное - читать всё, что есть в буфере, пока там что-то есть
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.