| 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) FunctionsThe DMA functions are: ddi_dma_alloc_handle()Allocate a DMA handleddi_dma_free_handle()Free a DMA handleddi_dma_mem_alloc()Allocate memory for a DMA transferddi_dma_mem_free()Free previously allocated DMA memoryddi_dma_addr_bind_handle()Bind an address to a DMA handleddi_dma_buf_bind_handle()Bind a system buffer to a DMA handleddi_dma_unbind_handle()Unbind the address in a DMA handleddi_dma_nextcookie()Retrieve the subsequent DMA cookieddi_dma_getwin()Activate a new DMA windowddi_dma_numwin()Retrieve number of DMA windowsddi_dma_sync()Synchronize CPU and I/O views of memoryddi_check_dma_handle()Check a DMA handleddi_dma_set_sbus64()Allow 64-bit transfers on SBusddi_slaveonly()Report whether a device is installed in a slave access-only locationddi_iomin()Find the minimum alignment and transfer size for DMAddi_dma_burstsizes()Find out the allowed burst sizes for a DMA mappingddi_dma_devalign()Find DMA mapping alignment and minimum transfer sizeddi_dmae_alloc()Acquire a DMA channelddi_dmae_release()Release a DMA channelddi_dmae_getattr()Get the DMA engine attributesddi_dmae_prog()Program a DMA channelddi_dmae_stop()Terminate a DMA engine operationddi_dmae_disable()Disable a DMA channelddi_dmae_enable()Enable a DMA channelddi_dmae_getcnt()Get the remaining DMA engine countddi_dmae_1stparty()Configure the DMA channel cascade modeddi_dma_coff()Convert a DMA cookie to an offset within a DMA handle
 Table B-5 Deprecated Direct Memory Access (DMA) Functions| Deprecated 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() | 
 |