Jump To:
Leopard Reference Library: Darwin
The Mac OS X kernel is the fundamental layer of the Mac OS X operating system. This environment includes the I/O Kit, the Mach kernel, and a BSD personality layer. Apple discourages developers from programming in the kernel, because kernel bugs can reduce the stability of the entire system. Many device drivers can be written entirely in user space and should be, where possible.

Document Descriptions
On Off
Display

Sort by
Title
Sorted by
Resource Type
Sort by
Date
Network Kernel Extensions Programming Guide (HTML) (PDF)
Describes how to write a kernel extension for adding or modifying functionality of a networking stack (Mac OS X 10.4 and later).
Guides 2009-03-02
File System Events Programming Guide (HTML) (PDF)
Explains how applications can detect changes in the file system.
Guides 2008-03-11
Kernel Extension Programming Topics (HTML) (PDF)
Combines the HOWTOs that were previously documented in Hello Debugger, Hello IOKit, Hello KEXT, Packaging KEXT, and KEXT Dependencies.
Guides 2007-10-31
Kernel Programming Guide (HTML) (PDF)
Essential information for programming in the Mac OS X kernel. Includes a high-level overview.
Guides 2006-11-07
Network Kernel Extensions (legacy) (HTML) (PDF)
Describes how to write a kernel extension for adding or modifying functionality of a networking stack (Mac OS X 10.3 and earlier).
Guides 2006-10-03
Coding in the Kernel (HTML)
Considerations and caveats about programming in the kernel.
Guides 2005-11-09
KPI Reference (HTML)
Provides information on the NKE Sustainable API in Headerdoc format.
Reference 2006-07-17
Kernel Extensions Release Notes (HTML)
Release Notes 2007-10-31
SimpleUserClient (HTML) (DMG) (ZIP)
Shows how to create a user client for an I/O Kit kernel driver.
Sample Code 2008-08-27
KauthORama (HTML) (DMG) (ZIP)
Prints each Kauth request, illustrating how Kauth interacts with high-level operations, like copying files.
Sample Code 2007-04-30
EmptyFS (HTML) (DMG) (ZIP)
A very simple VFS plug-in that mounts a volume that is completely empty.
Sample Code 2006-11-09
MFSLives (HTML) (DMG) (ZIP)
Sample VFS plug-in for the Macintosh File System (MFS) volume format, as used on 400KB floppies.
Sample Code 2006-11-09
VendorSpecificType00 (HTML) (DMG) (ZIP)
Demonstrates how to access vendor-specific storage device functionality using a simple interface from user space code.
Sample Code 2006-10-02
SampleFilterScheme (HTML) (DMG) (ZIP)
Demonstrates a simple filter scheme which passes all operations through to its provider unchanged.
Sample Code 2006-01-03
IOPrintSuperClasses (HTML) (DMG) (ZIP)
Given the name of a class, this tool will print all of the super-classes of that class.
Sample Code 2005-08-17
IOKitWithLibrary (HTML) (DMG) (ZIP)
Shows how an I/O Kit driver can link with a C library from a separate kernel extension.
Sample Code 2003-08-27
SimpleDataQueue (HTML) (DMG) (ZIP)
Implements an IODataQueue inside an I/O Kit KEXT which passes events and data to user space.
Sample Code 2003-01-14
TimerEventSample (HTML) (DMG) (ZIP)
Shows how to set up and use an IOTimerEventSource in a kext.
Sample Code 2003-01-14
Kernel Core Dumps (HTML)
TN2118: Explains how to gather and use remote kernel core dumps.
Technical Notes 2008-11-12
Understanding and Debugging Kernel Panics (HTML) (日本語 HTML)
TN2063: Addresses kernel panics: what they are and how to debug the code that caused the panic.
Technical Notes 2008-08-14
Kernel Authorization (HTML)
TN2127: Describes the kernel authorization (kauth) subsystem and its associated KPI.
Technical Notes 2007-01-16
Allocating and sharing memory with user space from an I/O Kit driver (HTML) (日本語 HTML)
QA1197: Describes the preferred technique for allocating and sharing buffers in an I/O Kit kernel driver.
Technical Q&As 2008-10-13
Generating a Non-Maskable Interrupt (NMI) (HTML) (日本語 HTML)
QA1264: Explains how to generate a non-maskable interrupt (NMI) on modern Macintosh systems.
Technical Q&As 2008-10-13
Mac OS X and root access (HTML)
QA1013: Describes how to enable root access in Mac OS X.
Technical Q&As 2008-09-16
Supported KPIs (HTML)
QA1575: Describes how to check whether a kernel function is part of a supported KPI.
Technical Q&As 2008-03-25
Kernel's MAC framework (HTML)
QA1574: Cautions that the kernel's MAC framework is currently not support.
Technical Q&As 2008-01-04
Descriptor Passing Problems (HTML)
QA1541: Describes how to work around common problems with descriptor passing.
Technical Q&As 2007-10-29
Developing for VFS (HTML) (日本語 HTML)
QA1242: Describes Apple's position on developing external file systems (VFS plug-ins) for Mac OS X.
Technical Q&As 2006-12-22
Volumes Not Showing Up On The Desktop (HTML)
QA1491: Describes how to make a volume from a third party VFS plug-in show up on the desktop.
Technical Q&As 2006-12-20
Integrating With The Connect to Server Dialog (HTML)
QA1387: Describes problems integrating a third-party network file system with Finder's Connect to Server dialog.
Technical Q&As 2006-11-16
Directories Appear as Volume Aliases (HTML)
QA1351: Discusses how VFS plug-ins should handle device numbers to ensure compatibility with Carbon applications.
Technical Q&As 2004-05-25
Issues with boot time KEXT loading (HTML) (日本語 HTML)
QA1087: Explains how to solve problems with loading KEXTs at boot time.
Technical Q&As 2004-01-15
Installing an I/O Kit KEXT Without Rebooting (HTML)
QA1319: Describes the state of the art of installing I/O Kit kernel extensions (KEXTs) without requiring a restart.
Technical Q&As 2003-10-28
Can't attach during two-machine debugging with GDB (HTML) (日本語 HTML)
Deprecated - QA1019: Describes a workaround for a problem attaching during two-machine debugging on Mac OS X 10.0.x.
Technical Q&As 2003-06-02
Getting List of All Processes on Mac OS X (HTML) (日本語 HTML)
QA1123: Describes how, using Carbon and BSD respectively, to list all applications and processes.
Technical Q&As 2002-03-05
IOLog and Interrupt Context (HTML) (日本語 HTML)
QA1100: Describes when IOKit runs at primary (hardware) interrupt context.
Technical Q&As 2002-02-13
Making sense of IOKit error codes (HTML) (日本語 HTML)
QA1075: Explains how to interpret I/O Kit error codes.
Technical Q&As 2002-02-07
Energy Star PCI Device (HTML) (日本語 HTML)
QA1108: Provides useful information for developers of Energy Star-compliant PCI devices.
Technical Q&As 2002-01-15
IOKit Framework Headers (HTML) (日本語 HTML)
QA1107: Describes the differences between the headers in IOKit.framework and the I/O Kit headers in Kernel.framework.
Technical Q&As 2002-01-15
Avoiding Kernel Event Conflicts (HTML)
QA1063: Documents the namespace for the vendor_code field of the kern_event_msg structure.
Technical Q&As 2001-09-14