|
|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Alex Mogilnikov 2:5054/70 02 Jun 2006 18:21:32 To : Alexander Kolesnikoff Subject : Что это? -------------------------------------------------------------------------------- 02 Jun 06 14:46, Anton Barabanov писал Alexander Kolesnikoff: >>> sio не сломан. Возможность потеpи данных - пpинципиальное >>> свойство кольцевых буфеpов. AK>> Проблема в действительности где-то очень глубоко в недрах AK>> ядра. И разбираться с ней мантейнер sio не хочет, тем более, что AK>> он сам не может у себя воспроизвести подобную ситуацию. С другой AK>> стороны, почему uart(4) подобной проблемой не страдает, на том же AK>> железе, разумеется? AB> Отмена поллинга помогла. Почему-то не получил твое письмо. Hасколько я понимаю, проблема заключается в следующем: UART имеет буфер размером (обычно) 32 байта. При приеме (обычно) 16 байт (то есть при заполнении буфера наполовину) UART генерирует запрос прерывания, по которому драйвер должен считать поступившие в буфер данные. Hа это действие у драйвера есть вполне определенный промежуток времени - время заполнения второй половины буфера, которое зависит от скорости поступления данных. Если за это время драйвер не успел прочитать поступившие данные, очередной принятый (33-й) байт записывается в буфер на место первого, и UART фиксирует ошибку. Эта проблема принципиально нерешаема в не real-time системах, где не гарантируется максимальное время реакции на событие (в данном случае заполнение половины буфера). Тот факт, что на время реакции влияет включение/выключение поллинга, неудивителен, но это (как и уменьшение скорости приема) только снижает вероятность возникновения переполнения, но не устраняет его возможность. Всего наилучшего, [Team PCAD 2000] Алексей М. ... Старый глюк лучше новых двух... --- * Origin: === Сисоп спит - почта идет === (2:5054/70) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/183144802ff0.html, оценка из 5, голосов 10
|