Specifications

Operating System Routines
IOC$INITIATE
IOC$INITIATE
Initiates the processing of the next I/O request for a device unit.
Module
IOSUBNPAG
Input
Location Contents
R3 Address of IRP
R5 Address of UCB
CPU$L_PHY_CPUID CPU ID of local processor
IRP$L_SVAPTE Address of system buffer (buffered I/O) or system
virtual address of the PTE that maps process buffer
(direct I/O)
IRP$W_BOFF Byte offset of start of buffer
IRP$L_BCNT Size in bytes of transfer
IRP$W_STS IRP$V_DIAGBUF set if a diagnostic buffer exists
IRP$L_DIAGBUF Address of diagnostic buffer, if one is present
EXE$GQ_SYSTIME Current system time (when I/O processing began)
UCB$L_DDB Address of DDB
UCB$L_DDT Address of DDT
UCB$L_AFFINITY Device’s affinity mask
DDT$L_START Address of driver start-I/O routine
Output
Location Contents
R0, R1 Destroyed
UCB$L_IRP Address of IRP
UCB$L_SVAPTE IRP$L_SVAPTE
UCB$W_BOFF IRP$W_BOFF
UCB$W_BCNT IRP$L_BCNT (low-order word)
UCB$L_STS UCB$V_CANCEL and UCB$V_TIMOUT cleared
Diagnostic buffer Current system time (first quadword)
Synchronization
IOC$INITIATE is called at fork IPL with the corresponding fork lock held in a
multiprocessing system. Within this context, it transfers control to the drivers
start-I/O routine.
3–92