| Предыдущий | Следующий |
| kIOReturnDMAError | kIOReturnTimeout |
kIOReturnBusy
Занятость является сигналом конкуренции
kIOReturnBusy сообщает, что устройство или ресурс сейчас занят. Причиной может быть выполняющаяся передача, операция изменения состояния, смонтированная или захваченная служба, сериализация контроллера либо другой клиент, использующий ресурс, который нельзя безопасно разделить для данного вызова. Это не обязательно означает, что другому процессу предоставлен исключительный доступ; такое более конкретное состояние представлено kIOReturnExclusiveAccess.
Быстрый цикл повторов превращает конкуренцию в дополнительную нагрузку и может мешать операции, которая должна завершиться первой. Воспринимайте значение как указание определить владельца или переход состояния, а затем дождаться завершения, освободить локальную работу или поставить операцию в очередь в соответствии с моделью параллелизма семейства.
Рекомендуемые проверки
- Запишите активную операцию, открытых клиентов, глубину очереди и состояние изменения конфигурации или питания устройства.
- Сериализуйте операции, которые не могут перекрываться, особенно сбросы, форматирование, извлечение и управляющие запросы, изменяющие интерфейсы.
- Если API предоставляет завершения или уведомления, используйте их вместо предположительных повторов.
- Исследуйте состояние занятости, сохраняющееся дольше нормального окна операции, как признак взаимной блокировки или зависшего драйвера.
Ссылки
- Справочник Apple IOReturn.h
- Основы Apple IOKit: обзор архитектуры
- Жизненный цикл устройств и захват интерфейсов в libusb
Нужно найти другой код? Найти другой код состояния или ошибки.
