Specifications
Completing an I/O Request and Handling Timeouts
8.2 Timeout Handling Routines
5. Clears bits 16 through 31 in R0 to indicate that no data was transferred
6. Issues the REQCOM macro to complete the request
8.2.3 Sending a Message to the Operator
The following sequence describes a timeout handling routine that sends a
message to the operator’s mailbox and then goes back into a wait-for-interrupt or
timeout state on the presumption that subsequent human intervention will make
the device operational:
1. The timeout handling routine invokes the FORK macro to lower IPL to driver
fork level.
2. It checks the cancel-I/O bit in the UCB status longword (UCB$V_CANCEL in
UCB$L_STS).
If UCB$V_CANCEL is set, the timeout handling routine can abort the
request. However, if UCB$V_CANCEL is clear, the timeout handling routine
performs the following actions:
a. Saves R3 and R4 on the stack.
b. Loads an operator communication process (OPCOM) message
code, such as MSG$_DEVOFFLIN, into R4. Note that the driver
must invoke the message definition macro $MSGDEF (located in
SYS$LIBRARY:STARLET.MLB) to use these message codes.
c. Loads the address of the operator’s mailbox (a pointer to which is located
at SYS$AR_OPRMBX) into R3.
d. Calls a system routine to place the message in the operator’s mailbox, as
follows:
JSB G^EXE$SNDEVMSG
e. Restores R3 and R4.
f. Invokes the DEVICELOCK macro to raise IPL to device IPL and obtain
the associated device lock.
8–6










