FreeBSD Device Drivers

by Joseph Kong

February 2012, 352 pp.
ISBN: 978-1-59327-204-3

$39.95

Contents | Reviews | Updates

FreeBSD Device Drivers is the first and only book to teach readers how to develop device drivers for the FreeBSD operating system. A one-stop reference for FreeBSD device driver writers of all levels of expertise, FreeBSD Device Drivers begins with the nuts and bolts of device drivers, including explanations of the different driver components and building blocks. You will then learn how to build and run modules, allocate memory, control device communication, deal with concurrency issues, manage hardware resources, handle interrupts, support direct memory access, write PCI, SCSI, and USB device drivers, and more. With case study chapters that dissect various drivers and a liberal use of examples—from simple "hello, world" drivers to full-blown, hardware-controlling drivers—you will walk away with a full understanding of how device drivers work on FreeBSD. This book is for anyone writing device drivers, but also for any FreeBSD enthusiast who would appreciate its hands-on approach to understanding the device driver subsystem, kernel internals, and key design choices made by the FreeBSD developers.


About the Author

Tinkering with computers has always been a passion of author Joseph Kong. He is a self-taught programmer who dabbles in information security, operating system theory, reverse engineering, and vulnerability assessment. The author of Designing BSD Rootkits (No Starch Press), he has written for Phrack Magazine and was previously a system administrator for the City of Toronto.


Table of Contents

Chapter 1: Building and Running Modules
Chapter 2: Allocating Memory
Chapter 3: Device Communication and Control
Chapter 4: Thread Synchronization
Chapter 5: Delaying Execution
Chapter 6: Case Study: Virtual Null Modem
Chapter 7: Newbus and Resource Allocation
Chapter 8: Interrupt Handling
Chapter 9: Case Study: Parallel Port Printer Driver
Chapter 10: Managing and Using Resources
Chapter 11: Case Study: Intelligent Platform Management Interface Driver
Chapter 12: Direct Memory Access
Chapter 13: Storage Drivers
Chapter 14: Common Access Method
Chapter 15: Case Study: Common Interface for SCSI-3 Support Driver
Chapter 16: USB Drivers / Case Study: USB Printer Driver
Chapter 17: Network Drivers

(top)