Chapter 1: Operating System Fundamentals
The Role of the Operating System
Chapter 3: Xcode and the Kernel Development Environment
Chapter 4: The I/O Kit Framework
Chapter 5: Interacting with Drivers from Applications
User and Kernel Virtual Addresses
Memory Ordering: Big vs. Little Endian
32-bit vs. 64-bit Memory Addressing
Low-Level Allocation Mechanisms
Allocating Memory with the C++ New Operator
Mapping Memory from a User Space Task into Kernel Space
Mapping Memory from the Kernel to a User Space Task
Mapping Memory to a Specific User Space Task
Chapter 7: Synchronization and Threading
Synchronizing Asynchronous Events: Work Loops
Chapter 8: Universal Serial Bus
USB Device and Driver Handling
Driver Example: USB Mass Storage Device Driver
Performing I/O to Bulk and Interrupt Endpoints
Chapter 9: PCI Express and Thunderbolt
Driver Example: A Simple PCI Driver
Accessing Configuration Space Registers
Power Management in the I/O Kit
Responding to Power State Changes
Requesting Power State Changes
Observing Device Power State Changes
Chapter 11: Serial Port Drivers
Mac OS X Serial Port Architecture Overview
Implementing the IOSerialDriverSync Class
Accessing a Serial Port from User Space
An Introduction to Digital Audio and Audio Devices
Driver and Hardware Initialization
Additional Audio Engine Functionality
Debugging and Testing Network Extensions
Building a Simple Ethernet Controller Driver
The Design of MyEthernetDriver
Driver Initialization and Startup
Configuring the Device Hardware Address
Enabling and Disabling the Device
Taking MyEthernetDriver for a Test-Drive
The IOBlockStorageDevice Interface
Implementing a Sample Partition Scheme
The Media Content Hint Property
A Sample Filter Scheme for Encryption
Creating a Custom GUID Partition Table
Chapter 15: User-Space USB Drivers
Handling Asynchronous Operations
The IOUSBDeviceInterface Class
The IOUSBInterfaceInterface Class
Endpoint Data Transfer Methods
Low-Latency Isochronous Transfers
Recovering from Crashes During Boot
Remote Debugging with GDB over Ethernet or FireWire
Live Debugging of a Running Kernel
Debugging Using a Virtual Machine
Debugging in the Kernel Using GDB
Diagnosing Hung Processes with Activity Monitor
Finding Memory and Resource Leaks
Chapter 17: Advanced Kernel Programming
SSE and Floating Point in the Kernel
Accessing Kernel Controls from User Space
Working with Processes in the Kernel
Notifications from Kernel Drivers
Installing and Loading Kernel Extensions
Loading Preferences and Settings
Building a Package for the Hello World Kernel Extension
3.142.197.95