man Pages(9F): DDI and DKI Kernel Functions
  Buscar sólo este libro
Descargar este libro en PDF

NAME

ddi_dma_nextseg - get next DMA segment

SYNOPSIS

#include <sys/ddi.h>
#include <sys/sunddi.h>

int ddi_dma_nextseg( ddi_dma_win_t win, ddi_dma_seg_t seg, ddi_dma_seg_t * nseg);

ARGUMENTS

win
A DMA window.
seg
The current DMA segment or NULL .
nseg
A pointer to the next DMA segment to be filled in. If seg is NULL ,a pointer to the first segment within the specified window is returned.

INTERFACE LEVEL

Solaris DDI specific (Solaris DDI).

DESCRIPTION

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.

RETURN VALUES

ddi_dma_nextseg( ) returns:
DDI_SUCCESS
Successfully filled in the next segment pointer.
DDI_DMA_DONE
There is no next segment. The current segment is the final segment within the specified window.
DDI_DMA_STALE
win does not refer to the currently active window.

CONTEXT

ddi_dma_nextseg( ) can be called from user or interrupt context.

EXAMPLE

For an example see ddi_dma_segtocookie(9F).

SEE ALSO

ddi_dma_addr_setup(9F), ddi_dma_buf_setup(9F), ddi_dma_nextwin(9F), ddi_dma_req(9S), ddi_dma_segtocookie(9F), ddi_dma_sync(9F), ddi_dma_lim_sparc(9S), ddi_dma_lim_x86(9S)
Writing Device Drivers