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


Solaris DDI specific (Solaris 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)