| Предыдущий | Следующий |
| MACH_MSG_IPC_SPACE | MACH_SEND_IN_PROGRESS |
MACH_MSG_MASK
Это маска, а не самостоятельная ошибка
MACH_MSG_MASK объединяет специальные биты нехватки ресурсов, которые могут добавляться операцией OR к некоторым результатам mach_msg . Поэтому прямое сравнение необработанного результата с MACH_RCV_BODY_ERROR или тайм-аутом отправки может не сработать, если установлен один из этих битов. Диагностический код должен разделить значение на основной результат и дополнительные флаги.
| Флаг | Ресурс, который не удалось передать |
|---|---|
MACH_MSG_VM_KERNEL | Внестрочная память из-за нехватки ресурсов виртуальной памяти ядра |
MACH_MSG_IPC_KERNEL | Право порта из-за нехватки ресурсов IPC ядра |
MACH_MSG_VM_SPACE | Внестрочная память из-за нехватки виртуального адресного пространства задачи |
MACH_MSG_IPC_SPACE | Право порта из-за отсутствия свободного места в пространстве имён IPC задачи |
Безопасная расшифровка
special = result & MACH_MSG_MASK;
base = result & ~MACH_MSG_MASK;
Базовое значение определяет, не было ли сообщение извлечено из очереди, было ли оно извлечено с повреждением заголовка или тела либо возвращено псевдополучением при отправке. Флаги уточняют причину, но не заменяют правила владения и очистки, заданные базовым результатом.
Ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.