Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

ddi_dma_nextseg(9F)

ddi_dma_nextwin(9F)

ddi_dma_sync(9F)

ddi_dma_cookie(9S)

ddi_dma_segtocookie(9F)

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)

Writing Device Drivers

SunOS 5.5/SPARC  —  Last change: 12 Oct 1992

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026