Sun Microsystems, Inc.
spacerspacer
spacer   www.sun.com docs.sun.com | | |  
spacer
black dot
   
A   B   C   D   E   F   G   H   I   J   K   L   M   N   O   P   Q   R   S   T   U   V   W   X   Y   Z
    
 
Kernel Functions for Driversddi_dma_nextseg(9F)


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);

INTERFACE LEVEL

 

Solaris DDI specific (Solaris DDI).

PARAMETERS

 
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.

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.

EXAMPLES

 

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_segtocookie(9F), ddi_dma_sync(9F), ddi_dma_lim_sparc(9S), ddi_dma_lim_IA(9s), ddi_dma_req(9S)

Writing Device Drivers


SunOS 5.9Go To TopLast Changed 1 Feb 1994

 
      
      
Copyright 2002 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms.