Specifications

Operating System Routines
IOC$RELSCHAN
IOC$RELSCHAN
Releases device ownership of only the secondary controllers data channel.
Module
IOSUBNPAG
Macro
RELSCHAN
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$RELSCHAN at fork IPL, holding the
corresponding fork lock in a multiprocessing environment. IOC$RELSCHAN
returns control to its caller after resuming execution of other fork processes
waiting for the secondary controller’s channel.
Description
IOC$RELSCHAN releases a secondary controller’s data channel (for instance, the
MASSBUS adapters controller data channel). The caller retains ownership of the
primary controllers data channel. A driver fork process calls IOC$RELCHAN to
release all controller data channels assigned to a device.
If the secondary channel’s wait queue contains waiting fork processes,
IOC$RELSCHAN dequeues a process, assigns the channel to that process,
restores R3 through R5, and reactivates the suspended process.
3–121