ddi_dma_movwin(9F)
NAME
ddi_dma_movwin - shift current DMA window
SYNOPSIS
#include <sys/ddi.h>
#include <sys/sunddi.h>
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 to
ddi_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 a call 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 (see ddi_dma_cookie(9S)).
Upon a successful return, cookiep is filled in just as
if an implicit ddi_dma_htoc(9F) had been made.
DESCRIPTION
ddi_dma_movwin() shifts the current DMA window. If a DMA
request allows the system to allocate resources for less
than the entire object by setting the DDI_DMA_PARTIAL flag
in the ddi_dma_req(9S) structure, the current DMA window can
be shifted by a call to ddi_dma_movwin().
The caller must first determine the current DMA window size
by a call to ddi_dma_curwin(9F). Using the current offset
and size of the window thus retrieved, the caller of
ddi_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.
ddi_dma_movwin() takes care of underlying resource synchron-
izations required to shift the window. However, if you want
to access the data prior to or after moving the window,
further synchronizations using ddi_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. Otherwise
it calls ddi_dma_movwin() to shift the current window and
starts another DMA transfer.
RETURN VALUES
ddi_dma_movwin() returns:
DDI_SUCCESS
The current length and offset are legal and have been
set.
DDI_FAILURE
Otherwise.
CONTEXT
ddi_dma_movwin() can be called from user or interrupt con-
text.
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),
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.
Man(1) output converted with
man2html