Введение
Расширение ядра (или kext) является динамично загруженным пакетом исполняемого кода, работающего в пространстве ядра. Можно создать kext для выполнения низкоуровневых задач, которые не могут быть выполнены в пространстве пользователя. Kexts обычно принадлежат одной из трех категорий:
Низкоуровневые драйверы устройств
Сетевые фильтры
Файловые системы.
Этот документ является первичным ресурсом для kext, программирующего в OS X. Это описывает структуру kext и демонстрирует процесс для разработки kext от создания проекта XCode к упаковке Вашего kext для распределения.
Кто должен считать этот документ?
Этот документ предназначается для разработчиков, разрабатывающих расширение ядра для OS X. Поскольку kext разработка имеет многочисленные ловушки, Вы призваны избежать создания kext, если Вы абсолютно не имеете к. Считайте Решение, Создать ли Расширение ядра, чтобы удостовериться, что kext является правильным решением для Ваших потребностей.
При разработке драйвера для USB или устройства FireWire это может и должно работать в пространстве пользователя. Посмотрите Руководство по Интерфейсу Устройства Руководства и FireWire Интерфейса USB-устройства для подробных данных.
Организация этого документа
Этот документ содержит следующие главы:
Решение, Создать ли Расширение ядра, объясняет, когда абсолютно необходимо создать kext, вместе с более безопасными, более простыми альтернативами для общих вопросов.
Анатомия Расширения ядра описывает компоненты пакета kext.
Создание Универсального Расширения ядра с XCode ведет Вас посредством создания простого универсального kext.
Создание Драйвера устройства с XCode ведет Вас посредством создания простого драйвера устройства Набора I/O.
Отладка Расширения ядра с GDB ведет Вас посредством отладки расширения ядра с GDB.
Инструменты командной строки для Анализа Расширений ядра описывают инструменты командной строки, которые можно использовать при работе с kexts.
Упаковка Расширения ядра для Распределения и Руководств по монтажу Вы посредством использования приложения Производителя Пакета для упаковки kext.
Свойства Info.plist для Расширений ядра описывают kext-специфичные свойства для информационного списка свойств Вашего kext.
См. также
Руководство по программированию ядра предоставляет фундаментальную высокоуровневую информацию об архитектуре операционной системы ядра OS X.
Основные принципы IOKit объясняют терминологию, понятия, архитектуру и основные механизмы Набора I/O.
Руководство по проектированию Драйвера устройства IOKit описывает общие задачи выполнить при создании драйвера Набора I/O.