| Предыдущий | Следующий |
| kIOFireWireTalkingAndListening | kIOFireWireCompleting |
kIOFireWireHardwareSlept
Контроллер не находится в активном состоянии ввода-вывода
kIOFireWireHardwareSlept сообщает о переходе оборудования FireWire в спящий режим. Это состояние питания контроллера, а не ответ протокола удалённого узла. На незавершённую работу также могут повлиять сброс шины, повторное перечисление устройств и порядок обратных вызовов после возобновления работы оборудования.
Важно отделить работу, завершённую до сна, от операций с неопределённым результатом. При возобновлении следует восстановить состояние контроллера и топологии через управляющий API, а не считать сохранённые идентификаторы узлов, зарегистрированные контексты или выделенные ресурсы по-прежнему действительными.
Сопоставьте состояние питания и ввода-вывода
- Запишите время сна и пробуждения, контроллер, открытых клиентов, незавершённые запросы и все события сброса или изменения топологии около перехода.
- Если API позволяет, прекратите отправку запросов до завершения, и отличайте явно отменённые операции от прерванных сном.
- После пробуждения подтвердите текущее поколение шины и идентичность целевого устройства перед повторным использованием рабочих контекстов.
- Не считайте пробуждение доказательством, что прерванная транзакция завершилась или отказала на удалённом устройстве.
Ссылки
- Apple: IOFireWireFamilyCommon.h
- Apple: обратный вызов BusReset
- Ядро Linux: сброс FireWire, поколение и Configuration ROM
Нужно найти другой код? Найти другой код состояния или ошибки.