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

 
Предыдущий Следующий
kIOReturnNoInterrupt kIOReturnMessageTooLarge

kIOReturnNoFrames

В очередь не поставлены DMA-кадры

kIOReturnNoFrames указывает на сбой постановки в очередь: DMA-операция дошла до пути, в котором не было кадров передачи. «Кадр» здесь означает единицу передачи драйвера или контроллера, а не обязательно видеокадр или блок файла. Поэтому результат следует интерпретировать вместе с API, который создаёт и отправляет дескрипторы устройства.

Это не аппаратный тайм-аут. Устройство может присутствовать и быть исправным, но сторона-производитель не передала работу DMA-механизму либо освободила её раньше, чем механизм успел воспользоваться ею. При асинхронном вводе-выводе часто встречаются ошибки срока жизни: буфер, дескриптор или соединение могут быть аннулированы до вызова обработчика завершения.

Полезные проверки

  • Проследите создание дескрипторов, постановку в очередь, отмену и завершение одного неудачного запроса.
  • Убедитесь, что очередь заполнена до запуска устройства и не очищается при смене режима, приостановке или закрытии.
  • Сохраняйте буфер и контекст запроса до тех пор, пока API не сообщит о завершении или отмене.
  • Журналируйте число кадров в очереди непосредственно перед отправкой: это отделяет пустую очередь производителя от сбоя выполнения контроллером.

Ссылки


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