NAME | SYNOPSIS | PARAMETERS | INTERFACE LEVEL | DESCRIPTION | RETURN VALUES | CONTEXT | EXAMPLES | SEE ALSO
#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);
A DMA segment.
A pointer to an off_t. Upon a successful return, it is filled in with the offset. This segment is addressing within the object.
The byte length. This segment is addressing within the object.
A pointer to a DMA cookie (see ddi_dma_cookie(9S)).
Solaris DDI specific (Solaris DDI).
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.
ddi_dma_segtocookie() returns:
Successfully filled in all values.
Failed to successfully fill in all values.
ddi_dma_segtocookie() can be called from user or interrupt context.
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 */ } } } }
NAME | SYNOPSIS | PARAMETERS | INTERFACE LEVEL | DESCRIPTION | RETURN VALUES | CONTEXT | EXAMPLES | SEE ALSO