Kernel Functions for Drivers ddi_dma_movwin(9F)
NAME
ddi_dma_movwin - shift current DMA window
SYNOPSIS
#include
#include
int ddi_dma_movwin(ddi_dma_handle_t handle, off_t *offp,
uint_t *lenp, ddi_dma_cookie_t *cookiep);
INTERFACE LEVEL
This interface is obsolete. ddi_dma_getwin(9F) should be
used instead.PARAMETERS
handle The DMA handle filled in by a call toddi_dma_setup(9F).
offp A pointer to an offset to set the DMA window to. Upon a successful return, it will be filled in with the new offset from the beginning of the object resources are allocated for. lenp A pointer to a value which must either be the current size of the DMA window (as known from acall to ddi_dma_curwin(9F) or from a previous
call to ddi_dma_movwin()). Upon a successful
return, it will be filled in with the size, in bytes, of the current window. cookiep A pointer to a DMA cookie (seeddi_dma_cookie(9S)). Upon a successful return,
cookiep is filled in just as if an implicitddi_dma_htoc(9F) had been made.
DESCRIPTION
The ddi_dma_movwin() function shifts the current DMA window.
If a DMA request allows the system to allocate resources forless than the entire object by setting the DDI_DMA_PARTIAL
flag in the ddi_dma_req(9S) structure, the current DMA win-
dow can be shifted by a call to ddi_dma_movwin().
The caller must first determine the current DMA window sizeby a call to ddi_dma_curwin(9F). Using the current offset
SunOS 5.11 Last change: 16 Jan 2006 1
Kernel Functions for Drivers ddi_dma_movwin(9F)
and size of the window thus retrieved, the caller ofddi_dma_movwin() may change the window onto the object by
changing the offset by a value which is some multiple of the size of the DMA window.The ddi_dma_movwin() function takes care of underlying
resource synchronizations required to shift the window. How-
ever, if you want to access the data prior to or after mov-
ing the window, further synchronizations usingddi_dma_sync(9F) are required.
This function is normally called from an interrupt routine. The first invocation of the DMA engine is done from the driver. All subsequent invocations of the DMA engine are done from the interrupt routine. The interrupt routine checks to see if the request has been completed. If it has, it returns without invoking another DMA transfer. Otherwiseit calls ddi_dma_movwin() to shift the current window and
starts another DMA transfer.RETURN VALUES
The ddi_dma_movwin() function returns:
DDI_SUCCESS The current length and offset are legal and
have been set.DDI_FAILURE Otherwise.
CONTEXT
The ddi_dma_movwin() function can be called from user,
interrupt, or kernel context.ATTRIBUTES
See attributes(5) for a description of the following attri-
butes:____________________________________________________________
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
|_____________________________|_____________________________|
| Stability Level | Obsolete ||_____________________________|_____________________________|
SEE ALSO
attributes(5), ddi_dma_curwin(9F), ddi_dma_getwin(9F),
ddi_dma_htoc(9F), ddi_dma_setup(9F), ddi_dma_sync(9F),
SunOS 5.11 Last change: 16 Jan 2006 2
Kernel Functions for Drivers ddi_dma_movwin(9F)
ddi_dma_cookie(9S), ddi_dma_req(9S)
Writing Device Drivers WARNINGS The caller must guarantee that the resources used by the object are inactive prior to calling this function.SunOS 5.11 Last change: 16 Jan 2006 3