Specifications

Operating System Routines
IOC$WFIKPCH, IOC$WFIRLCH
In a multiprocessing environment, issues a DEVICEUNLOCK to conditionally
release the device lock associated with the device unit and to lower IPL to
the IPL saved on the stack. These actions presume that the DEVICELOCK
macro has been issued prior to the wait-for-interrupt invocation.
Returns to the caller of the driver fork thread (that is, its callers caller)
whose address is now at the top of the stack.
In the course of processing, IOC$WFIKPCH or IOC$WFIRLCH explicitly removes
the longwords at 00(SP) through 08(SP) from the stack and implicitly removes
the longword at 12(SP) by exiting with an RSB instruction.
Note that IOC$WFIRLCH exits by transferring control to IOC$RELCHAN.
IOC$RELCHAN releases the controller data channel and executes the RSB
instruction. Because the release of the channel occurs at fork IPL, an interrupt
service routine cannot reliably distinguish between operations initiated by
IOC$WFIKPCH and IOC$WFIRLCH by examining the ownership of the CRB.
3–145