Document Information
Preface
Part I Designing Device Drivers for the Solaris Platform
1. Overview of Solaris Device Drivers
2. Solaris Kernel and Device Tree
3. Multithreading
4. Properties
5. Managing Events and Queueing Tasks
6. Driver Autoconfiguration
7. Device Access: Programmed I/O
8. Interrupt Handlers
9. Direct Memory Access (DMA)
10. Mapping Device and Kernel Memory
11. Device Context Management
12. Power Management
13. Hardening Solaris Drivers
14. Layered Driver Interface (LDI)
Part II Designing Specific Kinds of Device Drivers
15. Drivers for Character Devices
16. Drivers for Block Devices
17. SCSI Target Drivers
18. SCSI Host Bus Adapter Drivers
19. Drivers for Network Devices
20. USB Drivers
Part III Building a Device Driver
21. Compiling, Loading, Packaging, and Testing Drivers
22. Debugging, Testing, and Tuning Device Drivers
23. Recommended Coding Practices
Part IV Appendixes
A. Hardware Overview
B. Summary of Solaris DDI/DKI Services
C. Making a Device Driver 64-Bit Ready
D. Console Frame Buffer Drivers
Index
|
How This Book Is Organized
This book is organized into the following chapters:
Chapter 1, Overview of Solaris Device Drivers provides an introduction to device drivers and associated entry points on the Solaris platform. The entry points for each device driver type are presented in tables.
Chapter 2, Solaris Kernel and Device Tree provides an overview of the Solaris kernel with an explanation of how devices are represented as nodes in a device tree.
Chapter 3, Multithreading describes the aspects of the Solaris multithreaded kernel that are relevant for device driver developers.
Chapter 4, Properties describes the set of interfaces for using device properties.
Chapter 5, Managing Events and Queueing Tasks describes how device drivers log events and how to use task queues to perform a task at a later time.
Chapter 6, Driver Autoconfiguration explains the support that a driver must provide for autoconfiguration.
Chapter 7, Device Access: Programmed I/O describes the interfaces and methodologies for drivers to read or write to device memory.
Chapter 8, Interrupt Handlers describes the mechanisms for handling interrupts. These mechanisms include registering, servicing, and removing interrupts.
Chapter 9, Direct Memory Access (DMA) describes direct memory access (DMA) and the DMA interfaces.
Chapter 10, Mapping Device and Kernel Memory describes interfaces for managing device and kernel memory.
Chapter 11, Device Context Management describes the set of interfaces that enable device drivers to manage user access to devices.
Chapter 12, Power Management explains the interfaces for Power ManagementTM, a framework for managing power consumption.
Chapter 13, Hardening Solaris Drivers describes how to integrate fault management capabilities into I/O device drivers, how to incorporate defensive programming practices, and how to use the driver hardening test harness.
Chapter 14, Layered Driver Interface (LDI) describes the LDI, which enables kernel modules to access other devices in the system.
Chapter 15, Drivers for Character Devices describes drivers for character-oriented devices.
Chapter 16, Drivers for Block Devices describes drivers for a block-oriented devices.
Chapter 17, SCSI Target Drivers outlines the Sun Common SCSI Architecture (SCSA) and the requirements for SCSI target drivers.
Chapter 18, SCSI Host Bus Adapter Drivers explains how to apply SCSA to SCSI Host Bus Adapter (HBA) drivers.
Chapter 19, Drivers for Network Devices describes the Generic LAN driver (GLD), a Solaris network driver that uses STREAMS technology and the Data Link Provider Interface (DLPI).
Chapter 20, USB Drivers describes how to write a client USB device driver using the USBA 2.0 framework.
Chapter 21, Compiling, Loading, Packaging, and Testing Drivers provides information on compiling, linking, and installing a driver.
Chapter 22, Debugging, Testing, and Tuning Device Drivers describes techniques for debugging, testing, and tuning drivers.
Chapter 23, Recommended Coding Practices describes the recommended coding practices for writing drivers.
Appendix A, Hardware Overview discusses multi-platform hardware issues for device drivers.
Appendix B, Summary of Solaris DDI/DKI Services provides tables of kernel functions for device drivers. Deprecated functions are indicated as well.
Appendix C, Making a Device Driver 64-Bit Ready provides guidelines for updating a device driver to run in a 64-bit environment.
Appendix D, Console Frame Buffer Drivers describes how to add the necessary interfaces to a frame buffer driver to enable the driver to interact with the Solaris kernel terminal emulator.
|