Что означает код возврата ядра macOS 0xE00002EE (kIOReturnIsoTooOld)?

 
Предыдущий Следующий
kIOReturnNotResponding kIOReturnIsoTooNew

kIOReturnIsoTooOld

Запрошенное время запуска уже прошло

kIOReturnIsoTooOld — результат синхронизации IOKit для изохронного запроса, запланированного слишком далеко в прошлом. Изохронный ввод-вывод использует расписание по кадрам, а не неограниченный поток байтов. В устаревшем USB-интерфейсе Apple вызывающая сторона задаёт номер кадра шины, с которого должна начаться изохронная запись; к моменту получения запроса драйвером этот кадр уже может оказаться вне допустимого окна планирования контроллера.

Это не обычный тайм-аут. Тайм-аут означает, что операция не завершилась за разрешённое время ожидания; kIOReturnIsoTooOld означает, что расписание было недопустимо ещё до постановки передачи. Безопасное исправление — получить текущий номер кадра и повторно отправить запрос с подходящим опережением, а не использовать устаревший стартовый кадр.

Как диагностировать состояние

  • Запишите запрошенный стартовый кадр, текущий кадр шины, длительность передачи и задержку между вычислением и отправкой запроса.
  • Располагайте планирование и отправку близко друг к другу; не вычисляйте номер кадра в одном потоке, чтобы значительно позже поставить его в очередь из другого.
  • Учитывайте остановки очереди из-за смены режима, пауз отладчика, нагрузки на процессор или блокирующей работы в пути производителя данных.
  • Используйте документированную политику опережения для конкретного устройства и контроллера; допустимое окно не определяется одним значением IOReturn.

Ссылки


Нужно найти другой код? Найти другой код состояния или ошибки.