int ddi_dma_nextseg( ddi_dma_win_t win, ddi_dma_seg_t seg, ddi_dma_seg_t *nseg);
Solaris DDI specific (Solaris DDI).
ddi_dma_nextseg() gets the next DMA segment within the specified window win. If the current segment is NULL, the first DMA segment within the window is returned.
A DMA segment is always required for a DMA window. A DMA segment is a contiguous portion of a DMA window (see ddi_dma_nextwin.9f which is entirely addressable by the device for a data transfer operation.
An example where multiple DMA segments are allocated is where the system does not contain DVMA capabilities and the object may be non-contiguous. In this example the object will be broken into smaller contiguous DMA segments. Another example is where the device has an upper limit on its transfer size (for example an 8-bit address register) and has expressed this in the DMA limit structure (see ddi_dma_lim_sparc.9s or ddi_dma_lim_x86.9s In this example the object will be broken into smaller addressable DMA segments.
ddi_dma_nextseg() can be called from user or interrupt context.
For an example see ddi_dma_segtocookie.9f
Created by unroff & hp-tools. © by Hans-Peter Bischof. All Rights Reserved (1997).
Last modified 21/April/97