Jump To:
Leopard Reference Library
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

Sorted by
Title
Sort by
Topic
Sort by
Resource Type
Sort by
Date
Kernel Authorization (HTML)
TN2127: Describes the kernel authorization (kauth) subsystem and its associated KPI.
Kernel, Security Technical Notes 2007-01-16
Kernel Core Dumps (HTML)
TN2118: Explains how to gather and use remote kernel core dumps.
Hardware & Drivers, Kernel Technical Notes 2008-11-12
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, Kernel Guides 2007-10-31
Kernel Extensions Release Notes (HTML)
Kernel Release Notes 2007-10-31
Kernel Framework Reference (HTML)
Describes the APIs and classes (including I/O Kit families) that support kernel-resident device drivers.
General, Hardware & Drivers Reference 2009-01-06
Kernel Programming Guide (HTML) (PDF)
Essential information for programming in the Mac OS X kernel. Includes a high-level overview.
Interprocess Communication, Kernel Guides 2006-11-07
Kernel's MAC framework (HTML)
QA1574: Cautions that the kernel's MAC framework is currently not support.
Kernel Technical Q&As 2008-01-04
KPI Reference (HTML)
Provides information on the NKE Sustainable API in Headerdoc format.
General, Kernel, Networking Reference 2006-07-17
Leopard Technology Series for Developers: OS Foundations (HTML)
Leopard Overview article on system-level updates.
File Management Articles 2007-09-04
Mac OS X ABI Dynamic Loader Reference (HTML) (PDF)
Describes the functions used to access Mach-O files.
Runtime Architecture Reference 2005-11-09
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 Guides 2009-02-04
Mac OS X ABI Mach-O File Format Reference (HTML) (PDF)
Describes the data structures that make up the Mach-O file format.
Runtime Architecture, Tools Reference 2009-02-04
Mac OS X and root access (HTML)
QA1013: Describes how to enable root access in Mac OS X.
Hardware & Drivers, Kernel, Security Technical Q&As 2008-09-16
Mac OS X Code Signing In Depth (HTML)
TN2206: Intermediate to expert level overview of code signing that details specific options and gotchas
Security Technical Notes 2008-08-06
Mac OS X Man Pages (HTML)
HTML versions of the Mac OS X, Mac OS X Server, Xcode Tools, and CHUD man pages.
General, Networking, Tools Reference 2008-04-29
Mac OS X Notification Overview (HTML) (PDF)
Interprocess Communication, Runtime Architecture Guides 2007-05-15
Mach Absolute Time Units (HTML)
QA1398: Describes how to convert Mach absolute time units to real time, and vice versa.
Process Management, Resource Management Technical Q&As 2005-01-06
MachPortDump (HTML) (DMG) (ZIP)
Dumps out the Mach port name space of a process; useful when debugging port right leaks.
Resource Management Sample Code 2005-08-10
Making sense of IOKit error codes (HTML) (日本語 HTML)
QA1075: Explains how to interpret I/O Kit error codes.
Hardware & Drivers, Kernel Technical Q&As 2002-02-07
MapLargeFile (HTML) (DMG) (ZIP)
Shows a technique for mapping files greater than 4GB into memory for faster access.
Resource Management Sample Code 2003-11-19
Mass Storage Device Driver Programming Guide (HTML) (PDF)
Background and task information about developing kernel-resident drivers for mass storage devices.
Hardware & Drivers Guides 2007-04-03
MemoryBasedBundle (HTML) (DMG) (ZIP)
Shows how to execute Mach-O code from memory, much like GetMemFragment in CFM.
Runtime Architecture Sample Code 2005-08-10
MFSLives (HTML) (DMG) (ZIP)
Sample VFS plug-in for the Macintosh File System (MFS) volume format, as used on 400KB floppies.
File Management, Kernel Sample Code 2006-11-09
Miscellaneous User Space API Reference (HTML)
Describes APIs located in various headers in /usr/include.
General Reference 2006-09-05
Mixing link-local IP addresses and routable IP addresses (HTML)
QA1357: Explains how to enable communication between devices with link-local addresses and devices with routable addresses.
Networking Technical Q&As 2005-07-06
MoreIsBetter (HTML) (DMG) (ZIP)
Library providing indispensable wrapers and workarounds for many areas of Mac OS programming.
File Management, Networking, Porting, Process Management, Resource Management, Runtime Architecture, Security Sample Code 2003-10-27
MoreSCF (HTML) (DMG) (ZIP)
High-level wrapper around System Configuration framework, making common operations easy.
Networking Sample Code 2007-06-07
Moriarity (HTML) (DMG) (ZIP)
Implementing a Cocoa GUI that wraps command-line functionality, calling a UNIX task and presenting the results in a GUI.
Porting Sample Code 2003-01-14
Multipathing with FibreChannel on Mac OS X (HTML)
TN2173: An explanation on how FibreChannel multipathing works on Mac OS X and how to design storage hardware to take advantage of it
Hardware & Drivers Technical Notes 2007-03-23
Netwide Assembler Guide (HTML)
Describes the Netwide Assembler for Intel-based Macs.
Tools Reference 2008-06-19
Network Device Driver Programming Guide (HTML) (PDF)
Background and task information about developing network drivers for Mac OS X.
Hardware & Drivers Guides 2008-03-11
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, Networking Guides 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, Networking Guides 2009-03-02
NetworkAuthentication (HTML) (DMG) (ZIP)
Demonstrates authentication with Open Directory APIs and GSSAPI
Networking Sample Code 2005-06-01
NotifyTool (HTML) (DMG) (ZIP)
Shows how to use the BSD notify API.
Interprocess Communication Sample Code 2007-09-25
Observing Process Lifetimes Without Polling (HTML)
TN2050: Shows a variety of methods to observe process lifetimes without polling.
Process Management Technical Notes 2008-09-10
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 Guides 2006-05-23
Open Directory Programming Guide (HTML) (PDF)
Explains how to implement centralized storage and retrieval of information in Carbon.
Networking Guides 2007-01-08
Open Directory Reference (HTML) (PDF)
Describes the Carbon API for using Open Directory.
Networking Reference 2006-05-23
Open Firmware Memory bus speed (HTML)
HW97: Describes a method to display memory bus speed for G3 or G4 Macintosh in Open Firmware.
Hardware & Drivers Technical Q&As 2000-09-22
Packaging UNIX Software (HTML)
Explains how to post UNIX and other command-line tools to Apple's Macintosh Product Guide.
Porting, Tools Guides 2001-04-20
Pascal to C: PROCEDURE Parameters (HTML)
Deprecated - PT31: Nested procedures and PROCEDURE parameters in Pascal when converting them into C or C++.
Porting Technical Notes 1990-02-01
PCI/PCI-X slots on the Power Mac G5 (HTML)
QA1307: Discusses installing PCI/PCI-X cards of different speeds in the Power Mac G5.
Hardware & Drivers Technical Q&As 2003-09-30
Performance Overview (HTML) (PDF)
Introduces the factors that determine performance.
Performance Guides 2006-10-03
Perl, Python, and Ruby Extensions Release Notes (HTML)
Describes how to create universal binary extensions for Perl, Python, and Ruby.
Porting, Tools Release Notes 2007-10-31
PIDFromBSDProcessName (HTML) (DMG) (ZIP)
Provides a simple API to do process PID lookup based on BSD process name.
Porting, Process Management, Tools Sample Code 2003-02-13
Porting Command Line Unix Tools to Mac OS X (HTML) (日本語 HTML)
TN2071: A general guide for Unix developers porting software to Mac OS X.
Porting Technical Notes 2003-09-03
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, Porting Guides 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, Tools Guides 2008-04-08
Power Management; Policy Maker vs. Power Controller (HTML) (日本語 HTML)
QA1121: Describes the differences between a Power Management Policy Maker and a Power Management Power Controller.
Hardware & Drivers Technical Q&As 2002-02-13
Preventing sleep (HTML)
QA1160: Explains how your application can prevent the system from sleeping.
Resource Management Technical Q&As 2004-10-22
Programmatically causing restart, shutdown and/or logout (HTML) (日本語 HTML)
QA1134: Describes how to programmatically cause restart, shutdown, sleep or logout.
Hardware & Drivers Technical Q&As 2008-09-24
QISA (HTML) (DMG) (ZIP)
Demonstrates the basics of writing an Internet setup assistant for traditional Mac OS and Mac OS X.
Networking, Security Sample Code 2003-05-15
Registering and unregistering for sleep and wake notifications (HTML)
QA1340: Explains how applications can register and unregister for sleep and wake notifications on Mac OS X.
Hardware & Drivers, Resource Management Technical Q&As 2008-08-08
Retain Counts of io_object_t Objects in IOKit.framework (HTML) (日本語 HTML)
QA1195: Distinguishes between the retain counts of an I/O Kit kernel object and its io_object_t user space proxy.
Hardware & Drivers Technical Q&As 2008-09-24
Running At Login (HTML)
TN2228: Describes how to write code that's coordinated with the login process.
Process Management Technical Notes 2008-09-16
SampleD (HTML) (DMG) (ZIP)
Demonstrates use of launchd and Apple System Logger.
Process Management Sample Code 2005-10-27
SampleFilterScheme (HTML) (DMG) (ZIP)
Demonstrates a simple filter scheme which passes all operations through to its provider unchanged.
Hardware & Drivers, Kernel Sample Code 2006-01-03
SampleUSBAudioPlugin (HTML) (DMG) (ZIP)
USB audio plugin that performs a lowpass filtering operation on audio streamed through an audio USB Device.
Hardware & Drivers Sample Code 2005-03-07
SCSI Architecture Model Device Interface Guide (HTML) (PDF)
Explains how to develop applications that communicate with or control SCSI Architecture Model devices.
Hardware & Drivers Guides 2007-02-08
SCSIHBAEmulator (HTML) (DMG) (ZIP)
Demonstration of how to implement a virtual parallel tasking SCSI host bus adapter (HBA)
Hardware & Drivers Sample Code 2007-02-20
Secrets of the GPT (HTML)
TN2166: Describes the new partition map format used by Intel-based Macintosh computers.
File Management, Hardware & Drivers Technical Notes 2006-11-06
Secure Coding Guide (HTML) (PDF)
Describes techniques to use and factors to consider to make your code more secure from attack.
Security Guides 2008-05-23
Security Framework Error Codes (HTML)
QA1499: Explains how to interpret errors returned by the Security Framework with an overview of Security error handling.
Security Technical Q&As 2006-11-16
Security Overview (HTML) (PDF)
An introduction to computer security concepts and the security APIs in Mac OS X and iPhone OS.
Security Guides 2008-10-15
Setting environment variables for user processes (HTML)
QA1067: Tells how to set environment variables for user processes.
Porting, Tools Technical Q&As 2001-10-25
Signals and Threads (HTML) (日本語 HTML)
QA1184: Describes how threads and signals interact.
Performance, Tools Technical Q&As 2002-08-27
SimpleDataQueue (HTML) (DMG) (ZIP)
Implements an IODataQueue inside an I/O Kit KEXT which passes events and data to user space.
Hardware & Drivers, Kernel Sample Code 2003-01-14
SimpleDial (HTML) (DMG) (ZIP)
Demonstrates management of dialup connections, such as PPP, using System Configuration framework network connection API.
Networking Sample Code 2005-07-26
SimplePing (HTML) (DMG) (ZIP)
Sample provides simple API to programatically ping a remote host without admin privileges
Networking Sample Code 2003-10-27
SimpleReach (HTML) (DMG) (ZIP)
Demonstrates network host reachability testing using the System Configuration framework asynchronous network reachability API.
Networking Sample Code 2005-07-26
SimpleUserClient (HTML) (DMG) (ZIP)
Shows how to create a user client for an I/O Kit kernel driver.
Hardware & Drivers, Kernel Sample Code 2008-08-27
Sleep vs. Doze on Mac OS X (HTML)
QA1309: Discusses and demonstrates sleep versus doze detection on Machintosh Mac OS X
Hardware & Drivers Technical Q&As 2003-10-09
SocketCancel (HTML) (DMG) (ZIP)
Shows how to safely cancel threads that are blocked within BSD sockets calls.
Networking Sample Code 2005-08-10
SSLSample (HTML) (DMG) (ZIP)
Contains examples showing how to use SecureTransport.
Security Sample Code 2003-01-14
The state of mDNSResponder (HTML)
QA1339: Explains how to obtain information regarding the internal state of mDNSResponder.
Networking Technical Q&As 2006-10-03
Static linking of user binaries on Mac OS X (HTML) (日本語 HTML)
QA1118: Explains why static linking of user binaries is not supported on Mac OS X, and possible workarounds.
Porting, Runtime Architecture Technical Q&As 2002-02-07
Supported KPIs (HTML)
QA1575: Describes how to check whether a kernel function is part of a supported KPI.
Kernel Technical Q&As 2008-03-25
Suppressing the "unexpectedly quit" alert (HTML)
QA1288: Describes how to suppress the "unexpectedly quit" alert.
Security Technical Q&As 2008-03-11
Symbol Variants Release Notes (HTML)
Describes symbol variants, a way of providing multiple versions of symbols for backwards compatibility.
Porting, Tools Release Notes 2007-10-16
System Configuration Framework Reference (HTML)
Describes the API for configuration of network resources, the reachability of target hosts, and connection to network services.
Networking Reference 2008-04-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 Guides 2006-02-07
System Configuration Reference Update (HTML) (PDF)
Summarizes the symbols added to the System Configuration framework.
General, Networking Release Notes 2007-07-18
System Startup Programming Topics (HTML) (PDF)
Explains the boot process used to initialize the Mac OS X operating system.
Runtime Architecture Guides 2008-11-19
Text Encodings in VFS (HTML) (日本語 HTML)
QA1173: How to handle text encodings correctly when writing a file system (VFS) plug-in for Mac OS X.
File Management Technical Q&As 2003-02-10
Tiger Developer Overview Series: Developing 64-bit Applications (HTML)
Learn how Mac OS X Tiger breaks the limitations of 32-bit computing.
Performance, Porting Articles 2004-12-20
TimerEventSample (HTML) (DMG) (ZIP)
Shows how to set up and use an IOTimerEventSource in a kext.
Hardware & Drivers, Kernel Sample Code 2003-01-14
Understanding and Debugging Kernel Panics (HTML) (日本語 HTML)
TN2063: Addresses kernel panics: what they are and how to debug the code that caused the panic.
Hardware & Drivers, Kernel Technical Notes 2008-08-14
Uniquely Identifying a Macintosh Computer (HTML) (日本語 HTML)
TN1103: How to identify a specific Macintosh computer.
Security Technical Notes 2006-04-25
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 Guides 2009-02-04
Unix 03 Conformance Release Notes (HTML)
Describes features, issues, and workarounds related to Mac OS X v10.5 and its support of SUSv3 (Version 3 of the SUS).
General Release Notes 2006-10-06
Updating the TXT record of a Bonjour service (HTML)
QA1302: Explains how to update a Bonjour TXT record while running on either Jaguar or Panther.
Networking Technical Q&As 2004-07-14
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 Guides 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 Guides 2002-02-06
Using Doxygen to Create Xcode Documentation Sets (HTML)
Learn how to integrate your documentation into Xcode.
Open Source Articles 2008-06-09
UTXplorer (HTML) (DMG) (ZIP)
Uses the <utmpx.h> API to display current login sessions and login history.
Process Management Sample Code 2008-03-19
VendorSpecificType00 (HTML) (DMG) (ZIP)
Demonstrates how to access vendor-specific storage device functionality using a simple interface from user space code.
Hardware & Drivers, Kernel Sample Code 2006-10-02
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.
File Management, Kernel Technical Q&As 2006-12-20
VolumeToBSDNode (HTML) (DMG) (ZIP)
Shows how to iterate across all mounted volumes and retrieve their BSD node names.
File Management, Hardware & Drivers Sample Code 2006-10-16
Watcher (HTML) (DMG) (ZIP)
Uses FSEvents to monitor a directory hierarchy to keep track of its total size
File Management Sample Code 2006-08-04
Working with Configuration Variables (HTML) (日本語 HTML)
QA1119: Explains how to delete a specific Open Firmware configuration variable without using Command-Option-P-R.
Hardware & Drivers Technical Q&As 2002-02-13
Writing Open Directory Plug-ins (HTML)
Learn how to write Open Directory plug-ins to help your application locate and manage network information.
Networking Articles 2004-09-13
Writing PCI Drivers (HTML) (PDF)
Conceptual information about writing I/O Kit drivers for PCI, AGP, and CardBus (PC Card) devices.
Hardware & Drivers Guides 2006-04-04
X11 FAQ (HTML) (日本語 HTML)
QA1232: Frequently Asked Questions about using Apple's X Window System (X11) implementation.
Tools Technical Q&As 2003-11-17