Specifications

Operating System Routines
COM$POST, COM$POST_NOCNT
COM$POST, COM$POST_NOCNT
Initiates device-independent postprocessing of an I/O request independent of the
status of the device unit.
Module
COMDRVSUB
Input
Location Contents
R3 Address of IRP
R5 Address of UCB (COM$POST only)
IRP$L_MEDIA Data to be copied to the I/O status block
IRP$L_MEDIA+4 Data to be copied to the I/O status block
Output
Location Contents
R0 Destroyed
UCB$L_OPCNT Incremented (COM$POST only)
Synchronization
Drivers call COM$POST and COM$POST_NOCNT at or above fork IPL. These
routines execute at their callers’ IPL and return control at that IPL. The caller
retains any spinlocks it held at the time of the call.
Description
A driver fork process calls COM$POST or COM$POST_NOCNT after it has
completed device-dependent I/O processing for an I/O request initiated by
EXE$ALTQUEPKT. Because COM$POST_NOCNT, unlike COM$POST, does
not increment the unit’s operations count (UCB$L_OPCNT), a driver uses
COM$POST_NOCNT to initiate completion processing for an I/O request when
the associated UCB is not available.
COM$POST and COM$POST_NOCNT insert the IRP into the systemwide I/O
postprocessing queue, request an IPL$_IOPOST software interrupt, and return
control to the caller. Unlike IOC$REQCOM, these routines do not attempt to
dequeue any IRP waiting for the device or change the busy status of the device.
3–7