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)