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
Module Functions
Device Information Tree Node (dev_info_t) Functions
Device (dev_t) Functions
Property Functions
Device Software State Functions
Memory Allocation and Deallocation Functions
Kernel Thread Control and Synchronization Functions
Task Queue Management Functions
Interrupt Functions
Programmed I/O Functions
User Space Access Functions
User Process Event Functions
User Process Information Functions
User Application Kernel and Device Access Functions
Time-Related Functions
Power Management Functions
Fault Management Functions
Kernel Statistics Functions
Kernel Logging and Printing Functions
Buffered I/O Functions
Virtual Memory Functions
Device ID Functions
SCSI Functions
Resource Map Management Functions
System Global State
Utility Functions
C. Making a Device Driver 64-Bit Ready
D. Console Frame Buffer Drivers
Index
|
Direct Memory Access (DMA) Functions
The DMA functions are: - ddi_dma_alloc_handle()
Allocate a DMA handle
- ddi_dma_free_handle()
Free a DMA handle
- ddi_dma_mem_alloc()
Allocate memory for a DMA transfer
- ddi_dma_mem_free()
Free previously allocated DMA memory
- ddi_dma_addr_bind_handle()
Bind an address to a DMA handle
- ddi_dma_buf_bind_handle()
Bind a system buffer to a DMA handle
- ddi_dma_unbind_handle()
Unbind the address in a DMA handle
- ddi_dma_nextcookie()
Retrieve the subsequent DMA cookie
- ddi_dma_getwin()
Activate a new DMA window
- ddi_dma_numwin()
Retrieve number of DMA windows
- ddi_dma_sync()
Synchronize CPU and I/O views of memory
- ddi_check_dma_handle()
Check a DMA handle
- ddi_dma_set_sbus64()
Allow 64-bit transfers on SBus
- ddi_slaveonly()
Report whether a device is installed in a slave access-only location
- ddi_iomin()
Find the minimum alignment and transfer size for DMA
- ddi_dma_burstsizes()
Find out the allowed burst sizes for a DMA mapping
- ddi_dma_devalign()
Find DMA mapping alignment and minimum transfer size
- ddi_dmae_alloc()
Acquire a DMA channel
- ddi_dmae_release()
Release a DMA channel
- ddi_dmae_getattr()
Get the DMA engine attributes
- ddi_dmae_prog()
Program a DMA channel
- ddi_dmae_stop()
Terminate a DMA engine operation
- ddi_dmae_disable()
Disable a DMA channel
- ddi_dmae_enable()
Enable a DMA channel
- ddi_dmae_getcnt()
Get the remaining DMA engine count
- ddi_dmae_1stparty()
Configure the DMA channel cascade mode
- ddi_dma_coff()
Convert a DMA cookie to an offset within a DMA handle
Table B-5 Deprecated Direct Memory Access (DMA) FunctionsDeprecated Function |
Replacement |
ddi_dma_addr_setup() |
ddi_dma_alloc_handle(), ddi_dma_addr_bind_handle() |
ddi_dma_buf_setup() |
ddi_dma_alloc_handle(), ddi_dma_buf_bind_handle() |
ddi_dma_curwin() |
ddi_dma_getwin() |
ddi_dma_free() |
ddi_dma_free_handle() |
ddi_dma_htoc() |
ddi_dma_addr_bind_handle(), ddi_dma_buf_bind_handle() |
ddi_dma_movwin() |
ddi_dma_getwin() |
ddi_dma_nextseg() |
ddi_dma_nextcookie() |
ddi_dma_segtocookie() |
ddi_dma_nextcookie() |
ddi_dma_setup() |
ddi_dma_alloc_handle(), ddi_dma_addr_bind_handle(), ddi_dma_buf_bind_handle() |
ddi_dmae_getlim() |
ddi_dmae_getattr() |
ddi_iopb_alloc() |
ddi_dma_mem_alloc() |
ddi_iopb_free() |
ddi_dma_mem_free() |
ddi_mem_alloc() |
ddi_dma_mem_alloc() |
ddi_mem_free() |
ddi_dma_mem_free() |
hat_getkpfnum() |
ddi_dma_addr_bind_handle(), ddi_dma_buf_bind_handle(), ddi_dma_nextcookie() |
|