Specifications

Device Driver Entry Points
Alternate Start-I/O Routine
Alternate Start-I/O Routine
Initiates activity on a device that can support multiple, concurrent I/O operations
and synchronizes access to its UCB.
Specified in
Specify the address of the alternate start-I/O routine in the altstart argument to
the DDTAB macro. This macro places the address into DDT$L_ALTSTART.
Called by
Called by routine EXE$ALTQUEPKT in module SYSQIOREQ. A driver FDT
routine generally is the caller of EXE$ALTQUEPKT.
Synchronization
An alternate start-I/O routine begins execution at fork IPL, holding the
corresponding fork lock in a multiprocessing environment. It must return
control to its EXE$ALTQUEPKT in this context.
Context
Because an alternate start-I/O routine gains control in fork process context, it can
access only those virtual addresses that are in system (S0) space.
Register usage
An alternate start-I/O routine must preserve the contents of all registers except
R0 through R5.
Input
Location Contents
R3 Address of IRP
R5 Address of UCB
Exit
The alternate start-I/O routine completes I/O requests by calling the routine
COM$POST. This routine places each IRP in the I/O postprocessing queue
and returns control to the driver. The driver can then fetch another IRP
from an internal queue. If no IRPs remain, the driver returns control to
EXE$ALTQUEPKT, which relinquishes fork level synchronization and returns
to the driver FDT routine that called it. The FDT routine performs any
postprocessing and transfers control to the routine EXE$QIORETURN.
4–2