Specifications
Operating System Routines
EXE$FINISHIO, EXE$FINISHIOC
EXE$FINISHIO, EXE$FINISHIOC
Complete the servicing of an I/O request and return status to the I/O status block
specified in the request.
Module
SYSQIOREQ
Input
Location Contents
R0 First longword of status for the I/O status block
R1 Second longword of status for the I/O status block
(EXE$FINISHIO only)
R3 Address of IRP
R4 Address of current PCB
R5 Address of UCB
Output
Location Contents
R0 SS$_NORMAL
IRP$L_IOST1 First longword of I/O status
IRP$L_IOST2 Second longword of I/O status (cleared by
EXE$FINISHIOC)
UCB$L_OPCNT Incremented
Synchronization
EXE$FINISHIO and EXE$FINISHIOC execute at their caller’s IPL and raise to
fork IPL, acquiring the associated fork lock in a multiprocessing environment.
As a result, their callers cannot be executing above fork IPL. A driver usually
transfers control to these routines at IPL$_ASTDEL.
EXE$FINISHIO and EXE$FINISHIOC exit at IPL 0 (normal process IPL).
Description
EXE$FINISHIOC clears the contents of R1. Then, EXE$FINISHIO or
EXE$FINISHIOC takes the following steps to complete the processing of the
I/O request:
• Increases the number of I/O operations completed on the current device in the
operation count field of the UCB (UCB$L_OPCNT). This task is performed at
fork IPL, holding the associated fork lock in a multiprocessing environment.
• Stores the contents of R0 and R1 in the IRP.
3–28