Synopsis

Interface Level

Parameters

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.