У меня определено несколько прерываний UIO. Я использую Linux 6.12 без конфигурации реального времени (поэтому использую планировщик по умолчанию, CFS).
Мой драйвер пользовательского пространства использует опрос в цикле для просмотра этих прерываний, как описано здесь.
Иногда из-за частоты прерываний и капризов планировщика ядра процесс моего пользовательского пространства просыпается с несколькими прерываниями для обработки.
API опроса (и select и epoll) не передают порядок возникновения прерываний — выходные данные находятся в том же порядке, что и входные.
Есть ли какой-либо способ для драйвера пользовательского пространства надежно обрабатывать прерывания UIO по порядку? Существует ли другой, более подходящий API?
(Примечание: доставка с малой задержкой не является обязательным требованием. Я сосредоточен только на распознавании порядка событий.)
Подробнее здесь: https://stackoverflow.com/questions/798 ... ace-driver