Preface
1. An Introduction to Device Drivers
The Role of the Device Driver
Splitting the Kernel
Classes of Devices and Modules
Security Issues
Version Numbering
License Terms
Joining the Kernel Development Community
Overview of the Book
2. Building and Running Modules
Setting Up Your Test System
The Hello World Module
Kernel Modules Versus Applications
Compiling and Loading
The Kernel Symbol Table
Preliminaries
Initialization and Shutdown
Module Parameters
Doing It in User Space
Quick Reference
3. Char Drivers
The Design of scull
Major and Minor Numbers
Some Important Data Structures
Char Device Registration
open and release
scull's Memory Usage
read and write
Playing with the New Devices
Quick Reference
4. Debugging Techniques
Debugging Support in the Kernel
Debugging by Printing
Debugging by Querying
Debugging by Watching
Debugging System Faults
Debuggers and Related Tools
5. Concurrency and Race Conditions
Pitfalls in scull
Concurrency and Its Management
Semaphores and Mutexes
Completions
Spinlocks
Locking Traps
Alternatives to Locking
Quick Reference
6. Advanced Char Driver Operations
ioctl
Blocking I/O