| Предыдущий | Следующий |
| kIOFireWireOutOfTLabels | kIOFireWireBogusDCLProgram |
kIOFireWireBusReset
Команда относится к предыдущему поколению шины
kIOFireWireBusReset имеет точное объяснение в заголовке Apple: во время выполнения команды произошёл сброс шины, и текущее поколение больше не соответствует указанному в команде. Это результат согласованности топологии, а не произвольный тайм-аут ввода-вывода.
После сброса могут измениться ID узлов, роли root и bus manager и выделение ресурсов. Команда, созданная для предыдущего поколения, может больше не указывать на тот же логический путь, даже если физическое устройство остаётся подключённым. До повтора запроса восстановление должно заново проверить устройство и состояние приложения.
Безопасная граница восстановления
- Сохраните исходное поколение запроса, GUID цели и node ID, тип транзакции и статус завершения.
- Дождитесь уведомления или callback о сбросе, сообщающего новое пригодное поколение, до отправки дальнейшей работы.
- Заново разрешите цель и восстановите выделение ресурсов, которое владеющий API не сохраняет автоматически.
- Повторяйте только идемпотентные операции или операции, протокол которых подтверждает, что прежняя команда не подействовала.
Ссылки
- Apple: IOFireWireFamilyCommon.h
- Apple: callback BusReset
- Ядро Linux: сброс FireWire, поколение и Configuration ROM
Нужно найти другой код? Найти другой код состояния или ошибки.