| Предыдущий | Следующий |
| kIOReturnUnsupported | kIOReturnInternalError |
kIOReturnVMError
Важен контекст виртуальной памяти
kIOReturnVMError — общий результат IOKit для прочей ошибки виртуальной памяти. Пути передачи IOKit могут перемещать данные между пользовательским процессом, ядром и физической памятью; поэтому дескрипторы, сопоставления и преобразование адресов важны, даже если приложение видит только операцию устройства.
Это значение шире обычного сбоя выделения. kIOReturnNoMemory означает невозможность выделить память, а kIOReturnCannotWire относится к удержанию физической памяти резидентной для ввода-вывода. Для kIOReturnVMError нужно определить конкретную операцию виртуальной памяти и представление буфера.
Какие данные сохранить
- Владение буфером, диапазон адресов, размер, направление, этап дескриптора памяти и время жизни запроса.
- Проверьте парность сопоставлений, дескрипторов и операций завершения при успехе, ошибке и отмене.
- Уменьшите запрос до небольшого выровненного буфера, чтобы отличить проблему адресного пространства от накопленного давления ресурсов.
- Не предполагайте, что указатель кучи приложения непосредственно пригоден пути ввода-вывода на стороне драйвера.
Ссылки
- Исходный код Apple XNU: IOReturn.h
- Apple: управление данными в IOKit
- Apple: введение в IOKit Fundamentals
Нужно найти другой код? Найти другой код состояния или ошибки.