Site icon EfmSoft

Что означает код возврата ядра macOS 0 (KERN_SUCCESS)?

 
Также может означать:
КонстантаТипОС
ERROR_SUCCESSОшибка WindowsWindows
STATUS_SUCCESSNTSTATUSWindows
STATUS_WAIT_0NTSTATUSWindows
kOSReturnSuccessКод возврата ядра macOSmacOS
MACH_MSG_SUCCESSКод возврата ядра macOSmacOS
ippStsNoErrСтатус Intel IPPЛюбая
S_OKHRESULTWindows
hrNoneHRESULTWindows
Предыдущий Следующий
kOSReturnSuccess MACH_MSG_SUCCESS

KERN_SUCCESS

Для успешного примитива ядра Mach числовой результат полезен только вместе с точной операцией и состоянием объекта. KERN_SUCCESS равен нулю в пространстве kern_return_t и сообщает об успешном завершении вернувшего его интерфейса ядра Mach. Результат подтверждает контракт вызова, но вызывающая сторона всё равно должна проверить выходные счётчики, возвращённые права и состояние объекта, определённые конкретной процедурой.

Практический смысл

Несколько низкоуровневых API Apple используют ноль как успех, однако каждый typedef относится к отдельному контракту. Тип результата, проверка выходных данных и правила владения ресурсами остаются частью корректной обработки KERN_SUCCESS.

KERN_SUCCESS не является универсальным признаком успеха для POSIX, IOKit или обмена сообщениями Mach. Нулевое значение errno, IOReturn или mach_msg_return_t принадлежит другому контракту, даже если двоичное представление совпадает. Сохраняйте числовое значение, объявленный тип и первую вернувшую его операцию вместе с KERN_SUCCESS; то же целое число может принадлежать другому пространству статусов в другом API.

Соберите воспроизводимую запись

Что сохранитьДиагностическая ценность
Процедуру MIG или вызов ядра Mach, интерфейс подсистемы и точное значение kern_return_t.Определяет конкретный объект и операцию, связанные с успешным примитивом ядра Mach.
Имена входных и выходных портов вместе с типами прав до и после вызова.Отделяет состояние аргумента или жизненного цикла от нижележащего провайдера при анализе успешного завершения примитива Mach.
Возвращённые счётчики, selector flavor, версии структур и размеры буферов, использованные процедурой.Создаёт устойчивое сравнение состояния до и после операции при анализе успешного завершения примитива Mach.
Идентичность task, thread, host или memory object и событие жизненного цикла сразу после успеха.Показывает, является ли KERN_SUCCESS первичным результатом или преобразованной сводкой.

Для успешного примитива ядра Mach сохраните процедуру MIG или вызов ядра Mach, интерфейс подсистемы и точное значение kern_return_t до переустановки, перезагрузки или очистки состояния. Успех только после такого изменения полезен как сравнительный результат для успешного примитива ядра Mach, но не устанавливает исходную причину.

Проверки, разделяющие причины

  1. Повторите процедуру с одним намеренно недействительным правом или flavor и убедитесь, что возвращается ненулевой kern_return_t. Остальные входные данные оставьте неизменными.
  2. Проверьте выходной счётчик до чтения данных переменной длины, предоставленных ядром. Запишите первый статус и переход состояния.
  3. Освободите или передайте каждое возвращённое право Mach согласно контракту процедуры и проверьте отсутствие утечек прав. Изменившийся результат означает новую границу, а не автоматическое устранение при анализе успешного завершения примитива Mach.

Интерпретация сравнения

Наблюдаемое сравнениеСледующий проверяемый вывод
Первая контрольная проверка изменила результатСосредоточьтесь на намеренно изменённом праве или flavor, изолированном первой проверкой.
Вторая проверка успешного примитива ядра Mach воспроизводит тот же первый статусСохраните данные нижележащей подсистемы до изменения данных приложения. Вторая проверка подтверждала выходной счётчик перед чтением переменных данных.
После ограниченного изменения успешный результат сменился другим статусомПосле третьей проверки операция перешла к другой границе при анализе успешного завершения примитива Mach. Проверка освобождала или передавала права Mach и выявляла их утечки. Сохраните оба результата и интерпретируйте новый статус по его контракту API при анализе успешного завершения примитива Mach.

Критерии устранения

Целевое исправление. После KERN_SUCCESS сохраняйте проверки и правила владения конкретной процедуры, не сводя любой нулевой kern_return_t к одному общему пути успеха. Для успешного примитива ядра Mach изменяйте только объект, аргумент, политику, провайдер или состояние жизненного цикла, на которые указывают собранные данные.

Критерий приёмки. Процедура Mach возвращает KERN_SUCCESS, все выходные счётчики и права соответствуют определению интерфейса, а повторное выполнение не оставляет утечек и неожиданно потреблённых прав. Повторите исходную операцию, давшую успешный примитив ядра Mach с исходной идентичностью и поддерживаемой конфигурацией, затем сохраните одну отрицательную контрольную проверку с ожидаемым соседним результатом.

Технические ссылки

Эти источники определяют пространство имён и контракт подсистемы, необходимые для проверки KERN_SUCCESS в используемой версии платформы.


Нужно найти другой код? Найти другой код состояния или ошибки.

Exit mobile version