Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

ddi_dma_addr_bind_handle(9F)

ddi_dma_alloc_handle(9F)

ddi_dma_buf_bind_handle(9F)

ddi_dma_unbind_handle(9F)

ddi_dma_cookie(9S)

ddi_dma_nextcookie(9F)

NAME

ddi_dma_nextcookie − retrieve subsequent DMA cookie

SYNOPSIS

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

void ddi_dma_nextcookie(ddi_dma_handle_t handle, ddi_dma_cookie_t ∗cookiep);

ARGUMENTS

handle The handle previously allocated by a call to ddi_dma_alloc_handle(9F). 

cookiep A pointer to a ddi_dma_cookie(9S) structure. 

INTERFACE LEVEL

Solaris DDI specific (Solaris DDI). 

DESCRIPTION

ddi_dma_nextcookie() retrieves subsequent DMA cookies for a DMA object.  ddi_dma_nextcookie() fills in the ddi_dma_cookie(9S) structure pointed to by cookiep. The ddi_dma_cookie(9S) structure must be allocated prior to calling ddi_dma_nextcookie(). 

The DMA cookie count returned by ddi_dma_buf_bind_handle(9F), ddi_dma_addr_bind_handle(9F), or ddi_dma_getwin(9F) indicates the number of DMA cookies a DMA object consists of.  If the resulting cookie count, N, is larger than 1, ddi_dma_nextcookie() must be called N-1 times to retrieve all DMA cookies. 

CONTEXT

ddi_dma_nextcookie() can be called from user, kernel, or interrupt context. 

EXAMPLES

This example demonstrates the use of ddi_dma_nextcookie() to process a scatter-gather list of I/O requests. 

/∗ setup scatter-gather list with multiple DMA cookies ∗/
 ddi_dma_cookie_tdmacookie;
uint_tccount;
...
 status = ddi_dma_buf_bind_handle(handle, bp, DDI_DMA_READ,
NULL, NULL, &dmacookie, &ccount);
 
if (status == DDI_DMA_MAPPED) {
 /∗ program DMA engine with first cookie ∗/
 
while (--ccount > 0) {
ddi_dma_nextcookie(handle, &dmacookie);
/∗ program DMA engine with next cookie ∗/
}
}
...

SEE ALSO

ddi_dma_addr_bind_handle(9F), ddi_dma_alloc_handle(9F), ddi_dma_buf_bind_handle(9F), ddi_dma_unbind_handle(9F), ddi_dma_cookie(9S)

Writing Device Drivers
 

SunOS 5.5/SPARC  —  Last change: 26 Sep 1994

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