Porting Drivers to Mac OS X
PDF
Introduction
Driver Porting Basics
Does Your Driver Belong in the Kernel?
Whatâs My Class?
Workloops vs. Interrupt Handlers
IOMemoryDescriptor vs. kvtophys
C++ Driver Model
Data Types
ioctl Handling
sysctl and syscall Handling
Interrupt Priority Levels ( IPL/SPL) vs. IOLock Locks
I/O Kit Considerations
IOLog vs. multi-level logging
Asynchronicity and Synchronous Returns
timeout, sleep and untimeout
Namespace Pollution
Using Data Structures to Avoid Cross-Instance Namespace Pollution
Using Macros to Avoid Cross-Driver Namespace Pollution
C++ Language Considerations
Data Type Size Differences
Handling C to C++ Callbacks
Revision History