Specifications
Operating System Routines
EXE$QIODRVPKT
EXE$QIODRVPKT
Delivers an IRP to the driver’s start-I/O routine or pending-I/O queue, returns
success status in R0, lowers IPL to 0, and returns to the system service
dispatcher.
Module
SYSQIOREQ
Input
Location Contents
R3 Address of IRP
R4 Address of current PCB
R5 Address of UCB
UCB$B_FLCK Fork lock index or fork IPL
UCB$L_STS UCB$V_BSY set if device is busy, clear if device is
idle
UCB$L_IOQFL Address of pending-I/O queue listhead
UCB$W_QLEN Length of pending-I/O queue
Output
UCB$L_STS UCB$V_BSY set
UCB$W_QLEN Incremented
Synchronization
EXE$QIODRVPKT is called by a driver’s FDT routine at IPL$_ASTDEL. It exits
at IPL 0 (normal process IPL).
Description
EXE$QIODRVPKT calls EXE$INSIOQ. EXE$INSIOQ checks the status of the
device and calls either EXE$INSERTIRP or IOC$INITIATE to place the IRP
in the device’s pending-I/O queue or deliver it to the driver’s start-I/O routine,
respectively.
3–44