Specifications
Device Driver Entry Points
FDT Routines
Exit
In a set of FDT routines associated with an I/O function, each, except the last,
must return control to its caller by means of an RSB instruction. The last routine
must exit using one of the mechanisms listed in Table 4–1.
Table 4–1 Last FDT Routine Exit Mechanisms
Exit Mechanism Function
JMP EXE$ABORTIO Aborts an I/O request and returns status to the
caller of the $QIO system service in R0.
JSB EXE$ALTQUEPKT Queues an IRP to the driver’s alternate start-I/O
routine without checking the status of the device.
JMP EXE$FINISHIO Completes the processing of an I/O request,
returning status to the caller of the $QIO system
service. (EXE$FINISHIO takes the status
information from R0 and R1 and returns it in
the IOSB specified in the call to $QIO.)
JMP EXE$FINISHIOC Completes the I/O processing of an I/O request,
returning status to the caller of the $QIO system
service. (EXE$FINISHIOC takes the status
information from R0 and returns it in the IOSB
specified in the call to $QIO, clearing the second
longword of the IOSB.)
JMP EXE$QIODRVPKT Inserts an IRP into a device’s pending-I/O queue if
the device is busy, or starts I/O activity if the device
is idle.
Description
FDT routines validate the function-dependent arguments to a $QIO system
service request and prepare the I/O database to service the request. For each
function that a device supports, a set of FDT routines must provide preprocessing
of requests for that function. For a function that does not involve an I/O transfer,
a set of FDT routines may complete its processing. Otherwise FDT routines
can abort the request, pass it to the next FDT routine in the set, or pass it to a
system routine that delivers it to the driver.
4–12