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

Sort by
Title
Sorted by
Topic
Sort by
Resource Type
Sort by
Date
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
64-Bit Transition Guide (HTML) (PDF)
Describes the 64-bit features available in Mac OS X.
Interprocess Communication Guides 2008-04-08
BootstrapDump (HTML) (DMG) (ZIP)
Print Mach bootstrap namespace information.
Interprocess Communication Sample Code 2008-06-18
Darwin Notification API Reference (HTML)
Describes the Darwin API for interprocess notification.
Interprocess Communication Reference 2008-04-08
File System Events Programming Guide (HTML) (PDF)
Explains how applications can detect changes in the file system.
Interprocess Communication Guides 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 Guides 2006-11-07
Mac OS X Notification Overview (HTML) (PDF)
Interprocess Communication Guides 2007-05-15
NotifyTool (HTML) (DMG) (ZIP)
Shows how to use the BSD notify API.
Interprocess Communication Sample Code 2007-09-25
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.
Kernel Technical Q&As 2008-10-13
Avoiding Kernel Event Conflicts (HTML)
QA1063: Documents the namespace for the vendor_code field of the kern_event_msg structure.
Kernel Technical Q&As 2001-09-14
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.
Kernel Technical Q&As 2003-06-02
Coding in the Kernel (HTML)
Considerations and caveats about programming in the kernel.
Kernel Guides 2005-11-09
Descriptor Passing Problems (HTML)
QA1541: Describes how to work around common problems with descriptor passing.
Kernel 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.
Kernel Technical Q&As 2006-12-22
Directories Appear as Volume Aliases (HTML)
QA1351: Discusses how VFS plug-ins should handle device numbers to ensure compatibility with Carbon applications.
Kernel Technical Q&As 2004-05-25
EmptyFS (HTML) (DMG) (ZIP)
A very simple VFS plug-in that mounts a volume that is completely empty.
Kernel Sample Code 2006-11-09
Energy Star PCI Device (HTML) (日本語 HTML)
QA1108: Provides useful information for developers of Energy Star-compliant PCI devices.
Kernel Technical Q&As 2002-01-15
File System Events Programming Guide (HTML) (PDF)
Explains how applications can detect changes in the file system.
Kernel Guides 2008-03-11
Generating a Non-Maskable Interrupt (NMI) (HTML) (日本語 HTML)
QA1264: Explains how to generate a non-maskable interrupt (NMI) on modern Macintosh systems.
Kernel Technical Q&As 2008-10-13
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.
Kernel Technical Q&As 2002-03-05
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.
Kernel Technical Q&As 2003-10-28
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.
Kernel Technical Q&As 2006-11-16
IOKit Framework Headers (HTML) (日本語 HTML)
QA1107: Describes the differences between the headers in IOKit.framework and the I/O Kit headers in Kernel.framework.
Kernel Technical Q&As 2002-01-15
IOKitWithLibrary (HTML) (DMG) (ZIP)
Shows how an I/O Kit driver can link with a C library from a separate kernel extension.
Kernel Sample Code 2003-08-27
IOLog and Interrupt Context (HTML) (日本語 HTML)
QA1100: Describes when IOKit runs at primary (hardware) interrupt context.
Kernel Technical Q&As 2002-02-13
IOPrintSuperClasses (HTML) (DMG) (ZIP)
Given the name of a class, this tool will print all of the super-classes of that class.
Kernel Sample Code 2005-08-17
Issues with boot time KEXT loading (HTML) (日本語 HTML)
QA1087: Explains how to solve problems with loading KEXTs at boot time.
Kernel Technical Q&As 2004-01-15
KauthORama (HTML) (DMG) (ZIP)
Prints each Kauth request, illustrating how Kauth interacts with high-level operations, like copying files.
Kernel Sample Code 2007-04-30
Kernel Authorization (HTML)
TN2127: Describes the kernel authorization (kauth) subsystem and its associated KPI.
Kernel Technical Notes 2007-01-16
Kernel Core Dumps (HTML)
TN2118: Explains how to gather and use remote kernel core dumps.
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.
Kernel Guides 2007-10-31
Kernel Extensions Release Notes (HTML)
Kernel Release Notes 2007-10-31
Kernel Programming Guide (HTML) (PDF)
Essential information for programming in the Mac OS X kernel. Includes a high-level overview.
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.
Kernel Reference 2006-07-17
Mac OS X and root access (HTML)
QA1013: Describes how to enable root access in Mac OS X.
Kernel Technical Q&As 2008-09-16
Making sense of IOKit error codes (HTML) (日本語 HTML)
QA1075: Explains how to interpret I/O Kit error codes.
Kernel Technical Q&As 2002-02-07
MFSLives (HTML) (DMG) (ZIP)
Sample VFS plug-in for the Macintosh File System (MFS) volume format, as used on 400KB floppies.
Kernel Sample Code 2006-11-09
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 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 Guides 2009-03-02
SampleFilterScheme (HTML) (DMG) (ZIP)
Demonstrates a simple filter scheme which passes all operations through to its provider unchanged.
Kernel Sample Code 2006-01-03
SimpleDataQueue (HTML) (DMG) (ZIP)
Implements an IODataQueue inside an I/O Kit KEXT which passes events and data to user space.
Kernel Sample Code 2003-01-14
SimpleUserClient (HTML) (DMG) (ZIP)
Shows how to create a user client for an I/O Kit kernel driver.
Kernel Sample Code 2008-08-27
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
TimerEventSample (HTML) (DMG) (ZIP)
Shows how to set up and use an IOTimerEventSource in a kext.
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.
Kernel Technical Notes 2008-08-14
VendorSpecificType00 (HTML) (DMG) (ZIP)
Demonstrates how to access vendor-specific storage device functionality using a simple interface from user space code.
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.
Kernel Technical Q&As 2006-12-20
Apple Filing Protocol Programming Guide (HTML) (PDF)
Describes high-level concepts for Apple Filing Protocol commands.
Networking Guides 2006-04-04
Apple Filing Protocol Reference (HTML) (PDF)
Describes the Apple Filing Protocol commands.
Networking Reference 2006-05-23
Bonjour enforces the TXT record format in Panther (HTML)
QA1306: Explains how mDNSResponder enforces the proper TXT record format in Panther.
Networking Technical Q&As 2004-07-14
Bonjour Printer Subtype for HTTP (HTML)
QA1555: Describes how printer vendors can register their bonjour service such that Safari can see them.
Networking Technical Q&As 2008-03-25
CCL Modem Scripting Guide (HTML) (PDF)
Networking Guides 2007-06-28
CCL Modem Scripting Release Notes (HTML)
Explains changes to modem CCLs for Mac OS X v10.5 and what to do to change existing and supersede older scripts.
Networking Release Notes 2007-10-31
CFLocalServer (HTML) (DMG) (ZIP)
Uses UNIX domain sockets to communicate between client and server programs on the same machine.
Networking Sample Code 2005-07-26
CFProxySupportTool (HTML) (DMG) (ZIP)
Shows how to use the CFProxySupport APIs to decide whether a network connection should pass through a proxy.
Networking Sample Code 2007-10-29
The "chosen" node in the device tree (HTML)
HW88: Describes how to find the "chosen" node in the Open firmware device tree.
Networking Technical Q&As 2000-09-05
Descriptor Passing Problems (HTML)
QA1541: Describes how to work around common problems with descriptor passing.
Networking Technical Q&As 2007-10-29
Discovering all advertised Bonjour service types (HTML)
QA1337: Explains how to discover all Bonjour service types being advertised on the local network.
Networking Technical Q&As 2004-06-01
DNS Service Discovery C Reference (HTML)
Describes the DNS Service Discovery API for implementing Bonjour in an application.
Networking Reference 2008-04-23
DNSServiceMetaQuery (HTML) (DMG) (ZIP)
Shows how to discover Bonjour service types being advertised on the local network.
Networking Sample Code 2005-06-01
GetMACAddressSample (HTML) (DMG) (ZIP)
Demonstrates how to retrieve the MAC address for each Ethernet interface from the Mac OS X I/O Registry.
Networking Sample Code 2003-01-14
GetPrimaryMACAddress (HTML) (DMG) (ZIP)
Demonstrates retrieving the MAC address of the built-in Ethernet controller. Useful for uniquely identifying a Macintosh system.
Networking Sample Code 2005-10-27
Getting a Packet Trace (HTML) (日本語 HTML)
QA1176: Lists tools available for looking at the network packets on the wire.
Networking Technical Q&As 2008-06-03
IOKit Framework Headers (HTML) (日本語 HTML)
QA1107: Describes the differences between the headers in IOKit.framework and the I/O Kit headers in Kernel.framework.
Networking Technical Q&As 2002-01-15
KPI Reference (HTML)
Provides information on the NKE Sustainable API in Headerdoc format.
Networking Reference 2006-07-17
Mac OS X Man Pages (HTML)
HTML versions of the Mac OS X, Mac OS X Server, Xcode Tools, and CHUD man pages.
Networking Reference 2008-04-29
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.
Networking 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
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 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).
Networking Guides 2009-03-02
NetworkAuthentication (HTML) (DMG) (ZIP)
Demonstrates authentication with Open Directory APIs and GSSAPI
Networking Sample Code 2005-06-01
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
QISA (HTML) (DMG) (ZIP)
Demonstrates the basics of writing an Internet setup assistant for traditional Mac OS and Mac OS X.
Networking Sample Code 2003-05-15
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
SocketCancel (HTML) (DMG) (ZIP)
Shows how to safely cancel threads that are blocked within BSD sockets calls.
Networking Sample Code 2005-08-10
The state of mDNSResponder (HTML)
QA1339: Explains how to obtain information regarding the internal state of mDNSResponder.
Networking Technical Q&As 2006-10-03
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.
Networking Release Notes 2007-07-18
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
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
Frequently Asked Questions about the X Window System (X11) for Mac OS X (HTML)
TN2165: Answers several FAQs about the Mac OS X implementation of X11
Open Source Technical Notes 2007-01-22
Using Doxygen to Create Xcode Documentation Sets (HTML)
Learn how to integrate your documentation into Xcode.
Open Source Articles 2008-06-09
64-Bit Transition Guide (HTML) (PDF)
Describes the 64-bit features available in Mac OS X.
Performance Guides 2008-04-08
Affinity API Release Notes for Mac OS X v10.5 (HTML)
Explains how to influence which CPU core runs a group of threads (for performance optimization).
Performance Release Notes 2007-10-31
Disabling Processor Cores on a Multi-Core System (HTML) (日本語 HTML)
QA1141: Describes how to disable processor cores on a multi-core system for testing purposes.
Performance Technical Q&As 2008-09-16
dist_fft (HTML) (DMG) (ZIP)
Gigaelement FFTs on Apple G5 clusters
Performance Sample Code 2004-08-23
File System Events Programming Guide (HTML) (PDF)
Explains how applications can detect changes in the file system.
Performance Guides 2008-03-11
GDB for MacsBug Veterans (HTML)
TN2030: Translate your experience with MacsBug into a working knowledge of the GNU source-level debugger (GDB).
Performance Technical Notes 2001-10-18
Getting Started with launchd (HTML)
Learn about launchd and see how to migrate your configuration files.
Performance Articles 2005-08-22
Performance Overview (HTML) (PDF)
Introduces the factors that determine performance.
Performance Guides 2006-10-03
Signals and Threads (HTML) (日本語 HTML)
QA1184: Describes how threads and signals interact.
Performance Technical Q&As 2002-08-27
Tiger Developer Overview Series: Developing 64-bit Applications (HTML)
Learn how Mac OS X Tiger breaks the limitations of 32-bit computing.
Performance Articles 2004-12-20
64-Bit Transition Guide (HTML) (PDF)
Describes the 64-bit features available in Mac OS X.
Porting Guides 2008-04-08