Specifications
OpenVMS System Routines Called by OpenVMS AXP Device Drivers
IOC$CRAM_IO
SS$_TIMEOUT Mailbox operation did not complete in mailbox
transaction timeout interval.
Description
IOC$CRAM_IO performs an entire hardware I/O mailbox transaction from
the queuing of the hardware I/O mailbox to the MBPR to the transaction’s
completion. A call to IOC$CRAM_IO is the equivalent of independent calls to
IOC$CRAM_QUEUE and IOC$CRAM_WAIT. Prior to calling IOC$CRAM_IO, a
driver typically calls IOC$CRAM_CMD to insert a command, mask, and remote
interconnect address into the hardware I/O mailbox portion of the CRAM. For
CRAMs involved in writes to device interface registers, the driver must also
insert the data to be written into CRAM$Q_WDATA,
IOC$CRAM_IO initiates an I/O operation to a device in remote I/O space by
writing the physical address of the hardware I/O mailbox portion of a CRAM to
the MBPR. If it is not able to post the mailbox to the MBPR in the MBPR queue
timeout interval (CRAM$Q_QUEUE_TIME), it returns SS$_INTERLOCK status
to its caller.
If it does successfully queue the mailbox, it sets the CRAM$V_IN_USE bit in
CRAM$B_CRAM_FLAGS and repeatedly checks the done bit in the hardware I/O
mailbox (CRAM$V_MBX_DONE in CRAM$W_MBX_FLAGS):
• If the done bit is not set in the mailbox transaction timeout interval
(CRAM$Q_WAIT_TIME), IOC$CRAM_IO leaves the CRAM$V_IN_USE
bit in CRAM$B_CRAM_FLAGS set and returns SS$_TIMEOUT status to its
caller.
• If the done bit is set, but the error bit in the mailbox (CRAM$V_MBX_ERROR
in CRAM$W_MBX_FLAGS) is also set, IOC$CRAM_IO clears CRAM$V_IN_
USE and returns SS$_CTRLERR status to its caller. Note that, if the disable-
error bit (CRAM$V_DER) is set, IOC$CRAM_IO never returns an error
(although it may request an IOMBXERR fatal bugcheck in the event of an
error).
• If the done bit is set and the error bit is clear, IOC$CRAM_IO clears
CRAM$V_IN_USE and returns SS$_NORMAL status to its caller. If
IOC$CRAM_IO 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.
A–18