Specifications

Writing FDT Routines
5.2 Upper-Level FDT Action Routines
Before exiting, the upper-level FDT action routine takes steps to complete FDT
processing. Typically, these steps include:
Calling an FDT completion routine, which takes steps to complete the
processing of an I/O request or to deliver the I/O request to the driver. An
FDT completion routine typically provides the final $QIO completion status in
the FDT_CONTEXT structure and returns SS$_FDT_COMPL warning status
to its caller. SS$_FDT_COMPL status is a warning that FDT processing has
been completed and that the IRP is no longer accessible to FDT processing.
(For instance, the IRP may have been deallocated or queued to the driver’s
start-I/O routine, which accesses the IRP at fork IPL.)
Returning SS$_FDT_COMPL status to its caller, FDT dispatching code in the
$QIO system service.
Section 5.2.2 describes the FDT completion routines provided by OpenVMS.
If the preprocessing of a given I/O function requires the execution of multiple
upper-level FDT action routines, an OpenVMS AXP driver should provide a
composite FDT function which sequentially calls each of the required FDT
routines as long as the returned status is successful.
5.2.1 System-Provided Upper-Level FDT Routines
The system-provided upper-level FDT routines perform I/O request validation
that is common to many devices. Whenever possible, drivers should take
advantage of these routines. All of the system FDT routines listed in Table 5–1
transfer control to EXE_STD$QIODRVPKT, EXE_STD$FINISHIO, or EXE_
STD$ABORTIO to complete the I/O request. These FDT completion routines,
as described in Section 5.2.2, place final $QIO completion status in the FDT_
CONTEXT structure, and return SS$_FDT_COMPL status to the upper-level
FDT action routine. All upper-level FDT action routines return to the FDT
dispatching code in the $QIO system service.
For additional information about system-provided FDT routines, see the specific
routine descriptions in the OpenVMS AXP Device Support: Reference.
Table 5–1 System-Provided Upper-Level FDT Action Routines
FDT Routine Function Completion Routine Used
ACP_STD$ACCESS Accesses and creates ACP function
processing
Calls EXE_STD$ABORTIO,
EXE_STD$QIODRVPKT, or
EXE_STD$FINISHIO
ACP_STD$ACCESSNET Connects to network function processing Calls EXE_STD$ABORTIO,
EXE_STD$QIODRVPKT, or
EXE_STD$FINISHIO
ACP_STD$DEACCESS Deaccesses ACP function processing Calls EXE_STD$ABORTIO,
EXE_STD$QIODRVPKT, or
EXE_STD$FINISHIO
ACP_STD$MODIFY Deletes and modifies ACP function
processing
Calls EXE_STD$ABORTIO,
EXE_STD$QIODRVPKT, or
EXE_STD$FINISHIO
(continued on next page)
5–3