Specifications

Operating System Routines
EXE$IOFORK
EXE$IOFORK
Creates a fork process on the local processor for a device driver, disabling
timeouts from the associated device.
Module
FORKCNTRL
Macro
IOFORK
Input
Location Contents
R5 Address of fork block (usually the UCB)
00(SP) Return PC of caller
04(SP) Return PC of caller’s caller
FKB$B_FLCK (UCB$B_
FLCK)
Fork lock index or fork IPL
Output
Location Contents
R3 Destroyed
R4 Fork IPL
UCB$L_STS UCB$V_TIM cleared, disabling device timeouts
FKB$L_FR3 (UCB$L_
FR3)
R3 of caller
FKB$L_FR4 (UCB$L_
FR4)
R4 of caller
FKB$L_FPC (UCB$L_
FPC)
00(SP)
Synchronization
EXE$IOFORK acquires no spinlocks and leaves IPL unchanged. It returns
control to its caller’s caller.
Description
EXE$IOFORK first disables timeouts from the target device by clearing UCB$V_
TIM in UCB$L_STS.
It saves the contents of R3 and R4 (in FKB$L_FR3 and FKB$L_FR4, respectively)
in the fork block specified by R5, and pops the return PC value from the top of
the stack into FKB$L_FPC.
3–35