[Go to CFHT Home Page] Man Pages
Back to Software Index  BORDER=0Manpage Top Level
    ddi_dma_segtocookie(9F) manual page Table of Contents

Name

ddi_dma_segtocookie - convert a DMA segment to a DMA address cookie

Synopsis

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

int ddi_dma_segtocookie( ddi_dma_seg_t seg, off_t *offp, off_t *lenp, ddi_dma_cookie_t *cookiep);

Arguments

seg
A DMA segment.
offp
A pointer to an off_t. Upon a successful return, it is filled in with the offset. This segment is addressing within the object.
lenp
The byte length. This segment is addressing within the object.
cookiep
A pointer to a DMA cookie (see ddi_dma_cookie(9S) ).

Interface Level

Solaris DDI specific (Solaris DDI).

Description

ddi_dma_segtocookie() takes a DMA segment and fills in the cookie pointed to by cookiep with the appropriate address, length, and bus type to be used to program the DMA engine. ddi_dma_segtocookie() also fills in *offp and *lenp, which specify the range within the object.

Return Values

ddi_dma_segtocookie() returns:

DDI_SUCCESS
Successfully filled in all values.
DDI_FAILURE
Failed to successfully fill in all values.

Context

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

Example


for (win = NULL; (retw = ddi_dma_nextwin(handle, win, &nwin)) !=
    DDI_DMA_DONE; win = nwin) {
    if (retw != DDI_SUCCESS) {
        /* do error handling */
    } else {
        for (seg = NULL; (rets = ddi_dma_nextseg(nwin, seg, &nseg)) !=
            DDI_DMA_DONE; seg = nseg) {
            if (rets != DDI_SUCCESS) {
                /* do error handling */ 
            } else {
                ddi_dma_segtocookie(nseg, &off, &len, &cookie);
                /* program DMA engine */
            }
        }
    }
}

See Also

ddi_dma_nextseg(9F) , ddi_dma_nextwin(9F) , ddi_dma_sync(9F) , ddi_dma_cookie(9S)


Table of Contents