Part I Designing Device Drivers for the Solaris Platform
1. Overview of Solaris Device Drivers
2. Solaris Kernel and Device Tree
5. Managing Events and Queueing Tasks
7. Device Access: Programmed I/O
10. Mapping Device and Kernel Memory
14. Layered Driver Interface (LDI)
Part II Designing Specific Kinds of Device Drivers
15. Drivers for Character Devices
18. SCSI Host Bus Adapter Drivers
19. Drivers for Network Devices
Part III Building a Device Driver
21. Compiling, Loading, Packaging, and Testing Drivers
22. Debugging, Testing, and Tuning Device Drivers
23. Recommended Coding Practices
B. Summary of Solaris DDI/DKI Services
C. Making a Device Driver 64-Bit Ready
Error Handling
DDI/DKI Interfaces
Modify Routines That Handle Data Sharing
Binding a Driver to a Device
Compatible Device Names
Synchronous Data Transfers (Block Drivers)
VIS_CONSDISPLAY
Block Device Autoconfiguration
buf Structure
cb_ops Structure
Entry Points for Block Device Drivers
Block Device Autoconfiguration
Block Driver Structure Overview
close() Entry Point (Block Drivers)
open() Entry Point (Block Drivers)
strategy() Entry Point
Driver Hardening Test Harness
Configuring the Test Harness
To Boot With an Alternate Kernel
Booting kmdb With an Alternate Kernel on the SPARC Platform
Booting kmdb With an Alternate Kernel on the x86 Platform
buf Structure Changes
buf Structure
Allocating Private DMA Buffers
Buffered I/O Functions
Determining Maximum Burst Sizes
Bus Architectures
PCI Local Bus
SBus
Introduction to Target Drivers
Fault Injection
Device Tree Components
Fault Injection
Endianness