Specifications

OpenVMS System Routines Called by OpenVMS AXP Device Drivers
IOC$CRAM_WAIT
SS$_INSFARG No argument supplied in call.
SS$_TIMEOUT Mailbox operation did not complete in mailbox
transaction timeout interval.
Description
IOC$CRAM_WAIT checks the done bit in the hardware I/O mailbox (CRAM$V_
MBX_DONE in CRAM$W_MBX_FLAGS):
If CRAM$V_MBX_DONE is not set in the mailbox transaction timeout
interval (CRAM$Q_WAIT_TIME), IOC$CRAM_WAIT leaves the CRAM$V_
IN_USE bit in CRAM$B_CRAM_FLAGS set and returns SS$_TIMEOUT
status to its caller.
If CRAM$V_MBX_DONE is set, but the error bit in the mailbox (CRAM$V_
MBX_ERROR in CRAM$W_MBX_FLAGS) is also set, IOC$CRAM_WAIT
clears CRAM$V_IN_USE and returns SS$_CTRLERR status to its caller.
In this case, CRAM$W_ERROR_BITS contains a device-specific encoding of
additional status information.
If the done bit is set and the error bit is clear, IOC$CRAM_WAIT clears
CRAM$V_IN_USE and returns SS$_NORMAL status to its caller. If
IOC$CRAM_WAIT returns SS$_NORMAL status for read mailbox operations,
the requested data has been returned to CRAM$Q_RDATA. A return of SS$_
NORMAL status for mailbox write operations does not necessarily guarantee
that the data placed in CRAM$Q_WDATA has been successfully written to
the device register.
Note
If the disable-error bit (CRAM$V_DER) is set, IOC$CRAM_WAIT does not
return an error (although it may request an IOMBXERR fatal bugcheck
in the event of an error).
A–22