ddi_dma_movwin.9f revision 15e1afcd5e908ae29b1e6018838638befdc225a2
te
Copyright (c) 2006, Sun Microsystems, Inc.
The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
DDI_DMA_MOVWIN 9F "Jan 16, 2006"
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

The ddi_dma_movwin() function 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.

The ddi_dma_movwin() function takes care of underlying resource synchronizations 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

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 attributes:

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.