Previous Book Contents Book Index Next

Inside Macintosh: Devices /
Chapter 4 - SCSI Manager 4.3 / SCSI Manager 4.3 Reference
SCSI Manager 4.3 Functions / SIM Internal Functions


The XPT calls this function when a client calls the original SCSI Manager function SCSISelect.

typedef void (*SIMActionProc) (void * scsiPB, Ptr SIMGlobals);
A pointer to a SCSI I/O parameter block, which is described on page 4-23.
A pointer to the SIM's static data storage.
-->scsiPBLengthUInt16The size of the parameter block.
-->scsiFunctionCodeUInt8The SCSIOldCall function selector code (0x84).
-->scsiDeviceDeviceIdentThe device identification record.
-->scsiCompletionCallbackProcA pointer to a completion routine.
If this field is set to nil, the function is executed synchronously.
-->scsiDriverStorageUInt8 *Optional pointer to the device driver's private storage.
<--scsiCurrentPhaseUInt16The current SCSI bus phase.
-->scsiSelectorSInt16The SCSISelect trap selector (0x02).
<--scsiOldCallResultOSErrThe result code from SCSISelect.

This function indicates the beginning of an original SCSI Manager transaction. A SIM that supports original SCSI Manager emulation should attempt to select the device described in the scsiDevice field. Because the entire SCSI transaction is not completed by a call to SCSIOldCall, the result code for this function is returned in the scsiOldCallResult field rather than the scsiResult field, as with other functions. Subsequent original SCSI Manager function calls for this transaction are made through the NewOldCall function.

If the SIM successfully selects the device, it should queue the parameter block like any other SCSI I/O parameter block. The parameter block should not be removed until the NewOldCall function completes a SCSIComplete command.

To provide full compatibility with the original SCSI Manager, a SIM must be able to perform a SCSI arbitration and select process independent of a SCSI message-out or command phase. If the SIM requires the CDB or message-out bytes it will not be able to perform the select operation at the time of the SCSIOldCall request. The SIM should return noErr in the scsiOldCallResult field and wait for a subsequent I/O request before actually selecting the device.

The SCSIOldCall function returns an appropriate SCSISelect result code in the scsiOldCallResult field of the parameter block.

Previous Book Contents Book Index Next

© Apple Computer, Inc.
3 JUL 1996