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
|
IndexNumbers and Symbols
A
- access handles, Exclusive Use of DDI Access Handles
- add_drv command
- How to Build and Load the Layered Driver
- Checking Device Driver Bindings
- description of, Installing Drivers with add_drv
- device name, Compatible Device Names
- address spaces, description of, Virtual Memory
- agent, definition, What Is Predictive Self-Healing?
- allocb()function, Requests
- alternate access mechanisms, Programmed I/O Functions
- aphysio() function, DMA Transfers (Asynchronous)
- aread() entry point, asynchronous data transfers, Differences Between Synchronous and Asynchronous I/O
- ASSERT() macro
- Compiling and Linking the Driver
- Use ASSERT() to Catch Invalid Assumptions
- associating kernel memory with user applications, Associating Kernel Memory With User Mappings
- asynchronous communication drivers, testing, Asynchronous Communication Drivers
- asynchronous data transfers
- block drivers, Asynchronous Data Transfers (Block Drivers)
- character drivers, Differences Between Synchronous and Asynchronous I/O
- USB, Synchronous and Asynchronous Transfers and Callbacks
- attach() entry point
- Registering Drivers to Gain Device Access
- Device Power Management
- active power management, Device Power Management
- description of, attach() Entry Point
- network drivers, Generic LAN Driver Overview
- system power management, System Power Management
- auto-request sense mode, Auto-Request Sense Mode
- autoconfiguration
- of block devices, Block Device Autoconfiguration
- of character devices, Character Device Autoconfiguration
- overview, Driver Loading and Unloading
- routines, Autoconfiguration Entry Points
- of SCSI HBA drivers, Autoconfiguration Entry Points
- of SCSI target drivers, Autoconfiguration for SCSI Target Drivers
- Automated System Recovery Unit (ASRU), definition, Diagnosis, Suspect Lists, and Fault Events
- autoshutdown threshold, Autoshutdown Threshold
- autovectored interrupts, Device Interrupts
- avoiding data loss while testing, Avoiding Data Loss on a Test System
- awrite() entry point, asynchronous data transfers, Differences Between Synchronous and Asynchronous I/O
B
- bge driver code, Error Handling
- binary compatibility
- description of, DDI/DKI Interfaces
- potential problems, Modify Routines That Handle Data Sharing
- binding a driver to a device, Binding a Driver to a Device
- binding a driver to a USB device, Compatible Device Names
- biodone() function, Synchronous Data Transfers (Block Drivers)
- blitting, VIS_CONSDISPLAY
- block driver
- autoconfiguration of, Block Device Autoconfiguration
- buf structure, buf Structure
- cb_ops structure, cb_ops Structure
- overview, Entry Points for Block Device Drivers
- slice number, Block Device Autoconfiguration
- block driver entry points, Block Driver Structure Overview
- close() function, close() Entry Point (Block Drivers)
- open() function, open() Entry Point (Block Drivers)
- strategy() function, strategy() Entry Point
- bofi (bus_ops fault injection) driver, Driver Hardening Test Harness
- bofi.conf file, Configuring the Test Harness
- booting an alternate kernel, To Boot With an Alternate Kernel
- booting the kmdb debugger
- on SPARC systems, Booting kmdb With an Alternate Kernel on the SPARC Platform
- on x86 systems, Booting kmdb With an Alternate Kernel on the x86 Platform
- buf structure
- changes to, buf Structure Changes
- description of, buf Structure
- buffer allocation, DMA, Allocating Private DMA Buffers
- buffered I/O functions, Buffered I/O Functions
- burst sizes, DMA, Determining Maximum Burst Sizes
- bus
- architectures, Bus Architectures
- PCI architectures, PCI Local Bus
- SBus architecture, SBus
- SCSI, Introduction to Target Drivers
- bus-master DMA
- Bus-Master DMA
- Performing Bus-Master DMA Transfers
- bus nexus, Fault Injection
- bus nexus device drivers, description of, Device Tree Components
- bus nodes, Fault Injection
- byte ordering, Endianness
C
- cache, description of, Cache
- callback functions
- description of, Callback Functions
- example of, DMA Callback Example
- cb_ops structure, description of, cb_ops Structure
- cc command, Compiling and Linking the Driver
- cfgadm_usb command, Multiple-Configuration Devices
- character device driver
- aphysio() function, DMA Transfers (Asynchronous)
- autoconfiguration, Character Device Autoconfiguration
- cb_ops structure, cb_ops Structure
- close() entry point, close() Entry Point (Character Drivers)
- data transfers, I/O Request Handling
- device polling, Multiplexing I/O on File Descriptors
- entry points for, Overview of the Character Driver Structure
- I/O control mechanism, Miscellaneous I/O Control
- memory mapping, Mapping Device Memory
- minphys() function, minphys() Entry Point
- open() entry point, open() Entry Point (Character Drivers)
- overview, Entry Points for Character Device Drivers
- physio() function, DMA Transfers (Synchronous)
- strategy() entry point, strategy() Entry Point
- cloning SCSI HBA driver, Transport Structure Cloning
- close() entry point
- block drivers, close() Entry Point (Block Drivers)
- description of, close() Entry Point (Character Drivers)
- cmn_err() function, Test the Layered Driver
- debugging, Use cmn_err() to Log Driver Activity
- description of, Returning Errors
- example of, print() Entry Point (Block Drivers)
- compatible property, description of, Binding a Driver to a Device
- compiling drivers, Compiling and Linking the Driver
- condition variable functions, Kernel Thread Control and Synchronization Functions
- cv_broadcast(), Signaling the Condition
- cv_destroy(), Initializing Condition Variables
- cv_init(), Initializing Condition Variables
- cv_timedwait(), cv_wait() and cv_timedwait() Functions
- cv_timedwait_sig(), cv_timedwait_sig() Function
- cv_wait(), Waiting for the Condition
- cv_wait_sig(), cv_wait_sig() Function
- condition variables
- and mutex locks, Condition Variables in Thread Synchronization
- routines, Initializing Condition Variables
- .conf files, See hardware configuration files
- configuration, testing device drivers, Testing Drivers
- configuration descriptor clouds, Hot Reinsertion
- configuration entry points
- attach() function, attach() Entry Point
- detach() function, detach() Entry Point
- getinfo() function, getinfo() Entry Point
- configuration files, hardware, See hardware configuration files
- console frame buffer drivers, Console Frame Buffer Drivers
- debugging, Developing, Testing, and Debugging Console Frame Buffer Drivers
- kernel terminal emulator, Solaris Consoles and the Kernel Terminal Emulator
- polled I/O interfaces
- Polled I/O Interfaces
- Implementing Polled I/O in Console Frame Buffer Drivers
- standalone mode
- Polled I/O Interfaces
- Implementing Polled I/O in Console Frame Buffer Drivers
- video mode change callback interface
- Video Mode Change Callback Interface
- VIS_DEVINIT
- Frame Buffer Specific Configuration Module
- visual I/O interfaces, Console Visual I/O Interfaces
- context management, See device context management
- context of device driver, Driver Context
- cookies, DMA, DMA Model
- copying data
- copyin() function, User Addresses
- copyout() function, User Addresses
- CPR (CheckPoint and Resume), System Power Management
- crash command, Postmortem Debugging
- crash dumps, saving, Capture System Crash Dumps
- csi_arq_status structure, changes to, csi_arq_status Structure Changes
- cv_timedwait() function, changes to, cv_timedwait() and cv_timedwait_sig() Argument Changes
- cv_timedwait_sig() function, changes to, cv_timedwait() and cv_timedwait_sig() Argument Changes
|