| Предыдущий | Следующий |
| kIOFireWireNoListenerOrTalker | kIOFireWireChannelNotAvailable |
kIOFireWireNoChannels
Выделение канала является операцией с общим ресурсом шины
kIOFireWireNoChannels означает, что изохронная конфигурация не смогла получить пригодный канал у диспетчера ресурсов FireWire. IEEE 1394 имеет конечное нумерованное пространство каналов, при этом назначение канала и резервирование пропускной способности являются отдельными ресурсами. Интерфейс FireWire Linux отражает то же разделение: клиент просит диспетчер изохронных ресурсов выделить канал и/или полосу, а результат сообщает о них независимо.
Не приравнивайте этот статус к недостатку пропускной способности. Запрос может завершиться ошибкой из-за невозможности выделить приемлемый канал при наличии полосы, а kIOFireWireIsochBandwidthNotAvailable описывает противоположный класс ресурсов. Он также шире kIOFireWireChannelNotAvailable, который относится к недоступности выбранного канала, а не к невозможности получить любой канал для запроса.
Полезные доказательства и границы восстановления
- Запишите запрошенный канал или набор кандидатов, текущее поколение шины и то, выполнялось ли автоматическое выделение либо жёсткая привязка к номеру.
- Исследуйте другие активные изохронные потоки на той же шине FireWire. Резервирования каналов являются общими ресурсами шины, а не идентификаторами отдельных процессов.
- Если владеющий API допускает набор кандидатов или автоматическое выделение, не задавайте один канал жёстко, если этого не требует протокол верхнего уровня.
- После сброса шины дождитесь, пока путь восстановления ресурсов приложения установит текущий результат выделения; старый номер канала не доказывает, что тот же ресурс доступен в новом поколении.
Ссылки
- Документация ядра Linux: выделение изохронных каналов и полосы в IRM
- Техническое введение IEEE 1394: регистры диспетчера ресурсов и пространство из 64 каналов
- Apple: IOFireWireIsochChannelInterface
Нужно найти другой код? Найти другой код состояния или ошибки.