Who Should Read This Document?
Organization of This Document
Mac OS X provides a kernel extension mechanism as a means of allowing dynamic loading of pieces of code into the kernel, without the need to recompile. These pieces of code are known generically as plug-ins or, in the Darwin kernel, as kernel extensions or KEXTs.
Kernel Extension Concepts assumes you have no prior experience developing kernel extensions for Mac OS X or using Xcode, Apple’s integrated development environment. The information in this series of topics is very basic and is intended to introduce you to the fundamental techniques you need to develop, debug, and package kernel extensions.
This document contains the following information:
“About Kernel Extensions” provides some basic information about kernel extensions, including how to decide if you need to write one.
“Hello Kernel: Creating a Kernel Extension With Xcode” is a tutorial that shows you how to write, test, load, and unload a simple kernel extension.
“Hello I/O Kit: Creating a Device Driver With Xcode” is a tutorial that shows you how to write, test, load, and unload a simple I/O Kit driver.
“Hello Debugger: Debugging a Device Driver With GDB” is a tutorial that shows you how to debug a kernel extension using GDB (a command-line debugger).
“Packaging Your KEXT for Distribution and Installation” describes how to use the Package Maker application to package your KEXT.
“Loading Kernel Extensions at Boot Time” describes how kernel extensions are loaded in Mac OS X.
“Kernel Extension Dependencies” describes how KEXTs declare dependencies and lists version numbers of kernel subcomponents and loadable extensions.
“Kernel Extension Ownership and Permissions” describes the ownership and permissions rules that apply to all KEXTs.
© 2003, 2007 Apple Inc. All Rights Reserved. (Last updated: 2007-10-31)