Jump To:
Leopard Guides
Darwin is the UNIX technology-based foundation of Mac OS X. Darwin integrates several technologies. Among the most important are 4.4BSD-based operating-system services (built on the Mach 3.0 microkernel), the I/O Kit, networking facilities, and support for multiple integrated file systems. Developers can use Darwin to port UNIX/Linux applications and create kernel extensions.

A guided introduction and learning path for developers new to Darwin.   Essential information for developers working in the Darwin environment.   C and Objective-C API references organized by framework.
Document Descriptions
On Off
Display

Sort by
Title
Sorted by
Topic
Sort by
Date
File System Events Programming Guide (HTML) (PDF)
Explains how applications can detect changes in the file system.
File Management 2008-03-11
File System Overview (HTML) (PDF)
Conceptual information and guidelines describing the structure and usage of the Mac OS X file system.
File Management 2008-07-11
Building Darwin (HTML)
Explains how to work with the Darwin build system using the build tools provided.
General 2001-10-08
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.
General 2007-10-31
Porting Drivers to Mac OS X (HTML) (PDF)
Tips and code samples to help UNIX/Linux device driver developers bring their drivers to Mac OS X.
General 2009-05-06
Accessing Hardware From Applications (HTML) (PDF)
Tips and guidelines for developing applications that communicate with or control devices.
Hardware & Drivers 2007-02-08
Audio Device Driver Programming Guide (HTML) (PDF)
Explains how to develop kernel-resident drivers for audio devices.
Hardware & Drivers 2009-03-04
CCL Modem Scripting Guide (HTML) (PDF)
Hardware & Drivers 2007-06-28
Device File Access Guide for Serial Devices (HTML) (PDF)
Guidelines for using I/O Kit and POSIX functions to develop applications that communicate with serial devices.
Hardware & Drivers 2005-12-06
Device File Access Guide for Storage Devices (HTML) (PDF)
Guidelines for using I/O Kit and POSIX functions to develop applications that communicate with storage devices.
Hardware & Drivers 2007-03-06
FireWire Device Interface Guide (HTML) (PDF)
Explains how to develop applications to communicate with or control FireWire devices and units.
Hardware & Drivers 2007-02-08
HBA Device Driver Programming Guide (HTML) (PDF)
Describes how to develop a high-performance, kernel-resident driver for an HBA device.
Hardware & Drivers 2006-05-23
HID Class Device Interface Guide (HTML) (PDF)
Explains how to develop applications to communicate with or control HID class devices.
Hardware & Drivers 2009-05-06
I/O Kit Device Driver Design Guidelines (HTML) (PDF)
Design guidelines and tips for developing, debugging, and deploying kernel-resident device drivers, including user clients.
Hardware & Drivers 2007-03-06
I/O Kit Fundamentals (HTML) (PDF)
The basics of developing device drivers. Includes descriptions of I/O Kit families.
Hardware & Drivers 2007-05-17
Mass Storage Device Driver Programming Guide (HTML) (PDF)
Background and task information about developing kernel-resident drivers for mass storage devices.
Hardware & Drivers 2007-04-03
Network Device Driver Programming Guide (HTML) (PDF)
Background and task information about developing network drivers for Mac OS X.
Hardware & Drivers 2008-03-11
SCSI Architecture Model Device Interface Guide (HTML) (PDF)
Explains how to develop applications that communicate with or control SCSI Architecture Model devices.
Hardware & Drivers 2007-02-08
USB Device Interface Guide (HTML) (PDF)
Provides background information and sample code for developing applications to communicate with or control USB devices and interfaces.
Hardware & Drivers 2007-09-04
User-Mode USB Device Arbitration (HTML)
Information about using USB device arbitration, available in Mac OS X version 10.1 and later.
Hardware & Drivers 2002-02-06
Writing PCI Drivers (HTML) (PDF)
Conceptual information about writing I/O Kit drivers for PCI, AGP, and CardBus (PC Card) devices.
Hardware & Drivers 2006-04-04
AltiVec/SSE Migration Guide (HTML) (PDF)
Explains how to convert PowerPC AltiVec code to Intel SSE code.
Intel-Based Macs 2005-09-08
GCC Porting Guide (HTML) (PDF)
Provides guidance on how to migrate projects to new GCC releases.
Intel-Based Macs 2006-10-03
Mac OS X ABI Function Call Guide (HTML) (PDF)
Describes the function-calling conventions used in the architectures supported by Mac OS X.
Intel-Based Macs 2009-02-04
Universal Binary Programming Guidelines, Second Edition (HTML) (PDF)
Conceptual information and tips for writing code that runs on PowerPC-based and Intel-based Macintosh computers.
Intel-Based Macs 2009-02-04
64-Bit Transition Guide (HTML) (PDF)
Describes the 64-bit features available in Mac OS X.
Interprocess Communication 2008-04-08
File System Events Programming Guide (HTML) (PDF)
Explains how applications can detect changes in the file system.
Interprocess Communication 2008-03-11
Kernel Programming Guide (HTML) (PDF)
Essential information for programming in the Mac OS X kernel. Includes a high-level overview.
Interprocess Communication 2006-11-07
Mac OS X Notification Overview (HTML) (PDF)
Interprocess Communication 2007-05-15
Coding in the Kernel (HTML)
Considerations and caveats about programming in the kernel.
Kernel 2005-11-09
File System Events Programming Guide (HTML) (PDF)
Explains how applications can detect changes in the file system.
Kernel 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.
Kernel 2007-10-31
Kernel Programming Guide (HTML) (PDF)
Essential information for programming in the Mac OS X kernel. Includes a high-level overview.
Kernel 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).
Kernel 2006-10-03
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).
Kernel 2009-03-02
Apple Filing Protocol Programming Guide (HTML) (PDF)
Describes high-level concepts for Apple Filing Protocol commands.
Networking 2006-04-04
CCL Modem Scripting Guide (HTML) (PDF)
Networking 2007-06-28
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).
Networking 2006-10-03
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).
Networking 2009-03-02
Open Directory Plug-in Programming Guide (HTML) (PDF)
Explains how to implement dynamically loaded libraries that respond to Open Directory client requests in Carbon.
Networking 2006-05-23
Open Directory Programming Guide (HTML) (PDF)
Explains how to implement centralized storage and retrieval of information in Carbon.
Networking 2007-01-08
System Configuration Programming Guidelines (HTML) (PDF)
Explains how to use system configuration services for network configuration and management, including determining reachability and getting connected.
Networking 2006-02-07
64-Bit Transition Guide (HTML) (PDF)
Describes the 64-bit features available in Mac OS X.
Performance 2008-04-08
File System Events Programming Guide (HTML) (PDF)
Explains how applications can detect changes in the file system.
Performance 2008-03-11
Performance Overview (HTML) (PDF)
Introduces the factors that determine performance.
Performance 2006-10-03
64-Bit Transition Guide (HTML) (PDF)
Describes the 64-bit features available in Mac OS X.
Porting 2008-04-08
Packaging UNIX Software (HTML)
Explains how to post UNIX and other command-line tools to Apple's Macintosh Product Guide.
Porting 2001-04-20
Porting Drivers to Mac OS X (HTML) (PDF)
Tips and code samples to help UNIX/Linux device driver developers bring their drivers to Mac OS X.
Porting 2009-05-06
Porting UNIX/Linux Applications to Mac OS X (HTML) (PDF)
Conceptual information and tips about porting UNIX and Linux applications to Mac OS X.
Porting 2008-04-08
I/O Kit Fundamentals (HTML) (PDF)
The basics of developing device drivers. Includes descriptions of I/O Kit families.
Resource Management 2007-05-17
Dynamic Library Programming Topics (HTML) (PDF)
Explains how to design, implement, and use dynamic libraries.
Runtime Architecture 2009-02-26
Mac OS X Notification Overview (HTML) (PDF)
Runtime Architecture 2007-05-15
System Startup Programming Topics (HTML) (PDF)
Explains the boot process used to initialize the Mac OS X operating system.
Runtime Architecture 2008-11-19
Authorization Services Programming Guide (HTML) (PDF)
Explains how to add fine-grained control of privileged operations in an application.
Security 2009-01-06
Code Signing Guide (HTML) (PDF)
Explains how you can sign your code and why you should.
Security 2008-11-19
Secure Coding Guide (HTML) (PDF)
Describes techniques to use and factors to consider to make your code more secure from attack.
Security 2008-05-23
Security Overview (HTML) (PDF)
An introduction to computer security concepts and the security APIs in Mac OS X and iPhone OS.
Security 2008-10-15
Cross-Development Programming Guide (HTML) (PDF)
Explains how to build software for versions of Mac OS X other than the one the development tools are running on.
Tools 2006-11-07
HeaderDoc User Guide (HTML) (PDF)
Explains how to extract API reference documentation from commented header files.
Tools 2008-04-08
Packaging UNIX Software (HTML)
Explains how to post UNIX and other command-line tools to Apple's Macintosh Product Guide.
Tools 2001-04-20
Porting UNIX/Linux Applications to Mac OS X (HTML) (PDF)
Conceptual information and tips about porting UNIX and Linux applications to Mac OS X.
Tools 2008-04-08