Specifications
Operating System Routines
IOC$REQPCHANH, IOC$REQPCHANL, IOC$REQSCHANH, IOC$REQSCHANL
Description
A driver fork process calls IOC$REQPCHANH or IOC$REQPCHANL to acquire
ownership of the primary controller’s data channel; it calls IOC$REQSCHANH
or IOC$REQSCHANL to request the secondary controller’s data channel (for
instance, the MASSBUS adapter’s controller data channel).
Each routine examines CRB$V_BSY in CRB$B_MASK. If the selected controller’s
data channel is idle, the routine grants the channel to the fork process, placing
its UCB address in IDB$L_OWNER and returning successfully with the device’s
CSR address in R4.
If the data channel is busy, the routine saves process context by placing the
contents of R3 and the PC into the UCB fork block. (Note that IOC$RELCHAN
moves the contents of IDB$L_CSR into R4 before resuming execution of a waiting
fork process.) IOC$REQPCHANH and IOC$REQSCHANH then insert the UCB
at the head of the channel wait queue (CRB$L_WQFL); IOC$REQPCHANL and
IOC$REQSCHANL insert the UCB at the tail of the queue (CRB$L_WQBL).
Finally, the routine returns control to its caller’s caller.
3–138