Specifications
Operating System Routines
IOC$RELCHAN
IOC$RELCHAN
Releases device ownership of all controller data channels.
Module
IOSUBNPAG
Macro
RELCHAN
Input
Location Contents
R5 Address of UCB
UCB$L_CRB Address of CRB
CRB$L_LINK Address of secondary CRB
CRB$B_MASK CRB$V_BSY set if the channel is busy
CRB$L_INTD+
VEC$L_IDB
Address of IDB
IDB$L_OWNER Address of UCB of channel owner
CRB$L_WQFL Head of queue of UCBs waiting for the controller
channel
Output
Location Contents
R0, R1, R2 Destroyed
IDB$L_OWNER Cleared if no driver is waiting for the channel
CRB$B_MASK CRB$V_BSY cleared if no driver is waiting for the
channel
Synchronization
A driver fork process calls IOC$RELCHAN at fork IPL, holding the corresponding
fork lock in a multiprocessing environment. IOC$RELCHAN returns control to
its caller after resuming execution of other fork processes waiting for a controller
channel.
Description
A driver fork process calls IOC$RELCHAN to release all controller data channel
assigned to a device; it calls IOC$RELSCHAN to release only the secondary data
channel.
If the channel wait queue contains waiting fork processes, IOC$RELCHAN
dequeues a process, assigns the channel to that process, restores R3 and
R5, moves the address of the CSR (IDB$L_CSR) into R4, and reactivates the
suspended fork process.
3–116