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