| Предыдущий | Следующий |
| kIOFireWireInsufficientPower | kIOFireWireBusReset |
kIOFireWireOutOfTLabels
Исчерпаны идентификаторы сопоставления асинхронных запросов
kIOFireWireOutOfTLabels сообщает об исчерпании меток транзакций FireWire. Они используются для сопоставления незавершённых асинхронных запросов и ответов; это предел параллелизма запросов, а не ошибка выделения изохронного канала или полосы пропускания.
Вероятная причина — незавершённая работа, которая не была снята с учёта: задержанный ответ устройства, сброс шины, сделавший путь операции недействительным, отмена, не освободившая состояние, либо неограниченная отправка запросов вызывающей стороной. Восстановление следует начинать с поиска самых старых активных транзакций и их состояния завершения.
Измеряйте незавершённую работу
- Отслеживайте каждый асинхронный запрос по метке транзакции, целевому узлу, поколению шины, tcode, времени отправки и состоянию завершения.
- После сброса признавайте работу недействительной или отправляйте её повторно только по правилам восстановления API; не оставляйте потерянные метки в учёте приложения.
- Ограничивайте окно запросов на узел или контроллер и освобождайте ёмкость только после реального завершения или подтверждённой отмены.
- Не исправляйте это изменением распределения изохронных каналов: метки транзакций относятся к другому механизму FireWire.
Ссылки
- Apple: IOFireWireFamilyCommon.h
- Apple: IOFireWireDeviceInterface
- Ядро Linux: руководство по интерфейсу драйвера FireWire
Нужно найти другой код? Найти другой код состояния или ошибки.