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
Device Information Tree Node (dev_info_t) Functions
Device Software State Functions
Memory Allocation and Deallocation Functions
Task Queue Management Functions
Direct Memory Access (DMA) Functions
User Process Information Functions
User Application Kernel and Device Access Functions
Kernel Logging and Printing Functions
Resource Map Management Functions
C. Making a Device Driver 64-Bit Ready
The kernel thread control and synchronization functions are:
Wake up all waiting threads
Free an allocated condition variable
Allocate a condition variable
Wake up one waiting thread
Await an event with timeout
Await an event or signal with timeout
Await an event
Await an event or signal
Determine whether the current thread can receive a signal
Enter a critical region of control
Exit a critical region of control
Acquire mutual exclusion lock
Release mutual exclusion lock
Initialize mutual exclusion lock
Determine whether current thread is holding mutual exclusion lock
Attempt to acquire mutual exclusion lock without waiting
Downgrade a readers/writer lock holding from writer to reader
Acquire a readers/writer lock
Release a readers/writer lock
Initialize a readers/writer lock
Determine whether readers/writer lock is held for read or write
Attempt to acquire a readers/writer lock without waiting
Attempt to upgrade readers/writer lock holding from reader to writer
Destroy a semaphore
Initialize a semaphore
Decrement semaphore and possibly block
Decrement semaphore but do not block if signal is pending
Attempt to decrement semaphore but do not block
Increment semaphore and possibly unblock waiter