SCSI_SYNC_PKT(9F)       Kernel Functions for Drivers       SCSI_SYNC_PKT(9F)
NAME
       scsi_sync_pkt - synchronize CPU and I/O views of memory
SYNOPSIS
       #include <sys/scsi/scsi.h>       
void scsi_sync_pkt(
struct scsi_pkt *pktp);
INTERFACE LEVEL
       illumos DDI specific (illumos DDI).
PARAMETERS
       pktp               Pointer to a 
scsi_pkt(9S) structure.
DESCRIPTION
       The 
scsi_sync_pkt() function is used to selectively synchronize a       
CPU's or device's view of the data associated with the 
SCSI packet
       that has been mapped for 
I/O. This may involve operations such as
       flushes of 
CPU or 
I/O caches, as well as other more complex
       operations such as stalling until hardware write buffers have
       drained.
       This function need only be called under certain circumstances. When a       
SCSI packet is mapped for 
I/O using 
scsi_init_pkt(9F) and destroyed
       using 
scsi_destroy_pkt(9F), then an implicit 
scsi_sync_pkt() will be
       performed. However, if the memory object has been modified by either
       the device or a 
CPU after the mapping by 
scsi_init_pkt(9F), then a
       call to 
scsi_sync_pkt() is required.
       If the same scsi_pkt is reused for a data transfer from memory to a
       device, then 
scsi_sync_pkt() must be called before calling       
scsi_transport(9F). If the same packet is reused for a data transfer
       from a device to memory 
scsi_sync_pkt() must be called after the
       completion of the packet but before accessing the data in memory.
CONTEXT
       The 
scsi_sync_pkt() function may be called from user, interrupt, or
       kernel context.
SEE ALSO
       tran_sync_pkt(9E), 
ddi_dma_sync(9F), 
scsi_destroy_pkt(9F),       
scsi_init_pkt(9F), 
scsi_transport(9F), 
scsi_pkt(9S)       Writing Device Drivers                              January 16, 2006             SCSI_SYNC_PKT(9F)