SCSI_DMAGET(9F)         Kernel Functions for Drivers         SCSI_DMAGET(9F)
NAME
       scsi_dmaget, scsi_dmafree - SCSI dma utility routines
SYNOPSIS
       #include <sys/scsi/scsi.h>       
struct scsi_pkt *scsi_dmaget(
struct scsi_pkt *pkt,            
opaque_t dmatoken, 
int(*callback
)(void));       
void scsi_dmafree(
struct scsi_pkt *pkt);
INTERFACE LEVEL
       These interfaces are obsolete. Use 
scsi_init_pkt(9F) instead of       
scsi_dmaget(). Use 
scsi_destroy_pkt(9F) instead of 
scsi_dmafree().
PARAMETERS
       pkt                   A pointer to a 
scsi_pkt(9S) structure.       
dmatoken                   Pointer to an implementation dependent object.       
callback                   Pointer to a callback function, or 
NULL_FUNC or                   
SLEEP_FUNC.DESCRIPTION
       The 
scsi_dmaget() function allocates 
DMA resources for an already
       allocated 
SCSI packet. 
pkt is a pointer to the previously allocated       
SCSI packet (see 
scsi_pktalloc(9F)).
       The 
dmatoken parameter is a pointer to an implementation dependent
       object which defines the length, direction, and address of the data
       transfer associated with this 
SCSI packet (command). The 
dmatoken       must be a pointer to a 
buf(9S) structure. If 
dmatoken is 
NULL, no
       resources are allocated.
       The 
callback parameter indicates what 
scsi_dmaget() should do when
       resources are not available:       
NULL_FUNC                       Do not wait for resources. Return a 
NULL pointer.       
SLEEP_FUNC                       Wait indefinitely for resources.       
Other Values                       callback points to a function which is called when
                       resources may have become available. 
callback must
                       return either 
0 (indicating that it attempted to
                       allocate resources but failed to do so again), in
                       which case it is put back on a list to be called
                       again later, or 
1 indicating either success in
                       allocating resources or indicating that it no longer
                       cares for a retry.
       The 
scsi_dmafree() function frees the 
DMA resources associated with
       the 
SCSI packet. The packet itself remains allocated.
RETURN VALUES
       The 
scsi_dmaget() function returns a pointer to a 
scsi_pkt on
       success. It returns 
NULL if resources are not available.
CONTEXT
       If 
callback is 
SLEEP_FUNC, then this routine may only be called from
       user or kernel context. Otherwise, it may be called from user,
       kernel, or interrupt context. The 
callback function may not block or
       call routines that block.
       The 
scsi_dmafree() function can be called from user, interrupt, or
       kernel context.
ATTRIBUTES
       See 
attributes(7) for a description of the following attributes:
       +----------------+-----------------+
       |ATTRIBUTE TYPE  | ATTRIBUTE VALUE |
       +----------------+-----------------+
       |Stability Level | Obsolete        |
       +----------------+-----------------+
SEE ALSO
       attributes(7), 
scsi_pktalloc(9F), 
scsi_pktfree(9F),       
scsi_resalloc(9F), 
scsi_resfree(9F), 
buf(9S), 
scsi_pkt(9S)       Writing Device DriversNOTES
       The 
scsi_dmaget() and 
scsi_dmafree() functions are obsolete and will
       be discontinued in a future release. These functions have been
       replaced by, respectively, 
scsi_init_pkt(9F) and       
scsi_destroy_pkt(9F).
                              January 16, 2006               SCSI_DMAGET(9F)