Contents

images About the Authors

images About the Technical Reviewers

images Acknowledgments

images Introduction

images Chapter 1: Operating System Fundamentals

The Role of the Operating System

Process Management

Process Address Spaces

Operating System Services

Virtual Memory

Scheduling

Hardware and Drivers

Summary

images Chapter 2: Mac OS X and iOS

Programming APIs

Supported Platforms

164-bit Operating System

iOS

The XNU Kernel

Kernel Extensions (KEXTs)

Mach

The BSD Layer

The I/O Kit

Summary

images Chapter 3: Xcode and the Kernel Development Environment

Summary

images Chapter 4: The I/O Kit Framework

The I/O Kit Model

Object Relationship

The Info.plist File

The Driver Class

IORegistryExplorer

The Kernel Library: libkern

OSObject

Container Classes

Summary

images Chapter 5: Interacting with Drivers from Applications

The I/O Kit Framework

Finding a Driver

Observing Device Removal

Modifying Driver Properties

State-Based Interaction

Notifications from the Driver

Summary

images Chapter 6: Memory Management

Types of Memory

CPU Physical Address

Bus Physical Addresses

User and Kernel Virtual Addresses

Memory Ordering: Big vs. Little Endian

32-bit vs. 64-bit Memory Addressing

Memory Allocation

Low-Level Allocation Mechanisms

The Mach Zone Allocator

The kalloc Family

Memory Allocation in BSD

I/O Kit Memory Allocation

Allocating Memory with the C++ New Operator

Memory Descriptors

The IOBufferMemoryDescriptor

Other Memory Descriptors

Mapping Memory

Mapping Memory from a User Space Task into Kernel Space

The IOMemoryMap Class

Mapping Memory from the Kernel to a User Space Task

Mapping Memory to a Specific User Space Task

Physical Address Mapping

Summary

images Chapter 7: Synchronization and Threading

Synchronization Primitives

Atomic Operations

Locking

Spin locks

Mutexes

Condition Variables

Read/Write Mutexes

Synchronizing Asynchronous Events: Work Loops

IOCommandGate

Timers

Releasing Work Loops

Kernel Threads

Summary

images Chapter 8: Universal Serial Bus

USB Architecture

USB Transfer Speeds

Host Controllers

The USB Protocol

Endpoints

USB Descriptors

USB Device Classes

I/O Kit USB Support

USB Device and Driver Handling

Loading USB Drivers

USB Prober

Driver Example: USB Mass Storage Device Driver

Driver Startup

Handling Device Removals

Enumerating Interfaces

Enumerating Endpoints

Performing Device Requests

Performing I/O to Bulk and Interrupt Endpoints

Summary

images Chapter 9: PCI Express and Thunderbolt

Configuration Space Registers

PCI in I/O Kit

Matching and Loading Drivers

Driver Example: A Simple PCI Driver

Accessing Configuration Space Registers

PCI I/O Memory Regions

Handling Device Removal

Interrupts

Direct Memory Access

Summary

images Chapter 10: Power Management

The I/O Registry Power Plane

Power Management in the I/O Kit

Responding to Power State Changes

Requesting Power State Changes

Handling Device Idle

Observing Device Power State Changes

Putting It All Together

Summary

images Chapter 11: Serial Port Drivers

Mac OS X Serial Port Architecture Overview

Serial Port Drivers

Implementing the IOSerialDriverSync Class

Serial Port State

Serial Port Events

Serial Data Transfer

Accessing a Serial Port from User Space

Summary

images Chapter 12: Audio Drivers

An Introduction to Digital Audio and Audio Devices

Core Audio

I/O Kit Audio Support

Implementing an Audio Driver

Driver and Hardware Initialization

Registering Audio Controls

Implementing an Audio Engine

I/O Engine Initialization

Additional Audio Engine Functionality

Summary

images Chapter 13: Networking

Network Memory Buffers

Working with Memory Buffers

Network Kernel Extensions

Kernel Control KPI

Socket Filters

Internet Protocol Filters

Interface Filters

Debugging and Testing Network Extensions

Networking in the I/O Kit

Building a Simple Ethernet Controller Driver

The Design of MyEthernetDriver

Driver Initialization and Startup

Medium and Status Selection

Configuring the Device Hardware Address

Enabling and Disabling the Device

Transmitting Network Packets

Receiving Packets

Taking MyEthernetDriver for a Test-Drive

Summary

images Chapter 14: Storage Systems

Transport Layer Drivers

The IOBlockStorageDevice Interface

Building a RAM Disk Device

Partition Schemes

Implementing a Sample Partition Scheme

The Media Content Hint Property

Media Filter Drivers

A Sample Filter Scheme for Encryption

Creating a Custom GUID Partition Table

Summary

images Chapter 15: User-Space USB Drivers

Behind the Scenes

The IOUSBLib Framework

Handling Asynchronous Operations

The IOUSBDeviceInterface Class

The IOUSBInterfaceInterface Class

Property Methods

Endpoint Data Transfer Methods

Low-Latency Isochronous Transfers

Summary

images Chapter 16: Debugging

Common Types of Problems

Kernel Panics

Debugging Mechanisms

Recovering from Crashes During Boot

Tracing with IOLog()

Printing Stack Traces

Remote Tracing over FireWire

Remote Kernel Core Dumps

KDB

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

Summary

images Chapter 17: Advanced Kernel Programming

SSE and Floating Point in the Kernel

Multi-Function Drivers

Writing I/O Kit Families

Kernel Control KPI

Kernel Control Registration

Client Connections

Getting and Setting Options

Accessing Kernel Controls from User Space

Working with Processes in the Kernel

Loading Resources

Beyond KEXT Resources

Notifications from Kernel Drivers

Summary

images Chapter 18: Deployment

Installing and Loading Kernel Extensions

Loading Preferences and Settings

Versioning Kernel Extensions

Testing and Quality Assurance

Packaging KEXTs and Software

Building a Package for the Hello World Kernel Extension

Adding Contents to the Package

Configuring the Package

Building the Package

Uninstalling Packages

Summary

images Index

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.142.197.95