Specifications

Writing Device-Driver Tables
4.2 Driver Dispatch Table
Mount verification routine
Cloned UCB routine
Start-I/O routine for a driver employing the kernel process services
In addition, the DPTAB macro allows you to specify the length of any diagnostic
buffer or error message buffer.
See the description of the DDTAB macro in OpenVMS AXP Device Support:
Reference. for additional information.
4.3 Function Decision Table
A function decision table (FDT) is a structure within a driver that consists of two
substructures:
A quadword bitmap known as the buffered function mask
A 64-element array of longwords known as the FDT action routine vector
Each bit in the buffered function mask represents an I/O function that is
serviced by the driver by means of an intermediate system buffer.
Each 32-bit slot of the FDT action routine vector corresponds to
the symbolic value of an I/O function defined by the $IODEF macro in
SYS$LIBRARY:STARLET.MLB. Those vector slots that relate to functions
serviced by a driver contain the procedure value of an upper-level FDT action
routine that initiates driver-specific preprocessing of the function. Those slots
that represent functions the driver does not support contain the procedure value
of a system upper-level FDT action routine that processes illegal I/O functions
(EXE$ILLIOFUNC). When a $QIO is issued to a device driver, specifying an I/O
function code the driver does not support, EXE$ILLIOFUNC executes, calling the
FDT completion routine EXE_STD$ABORTIO. EXE_STD$ABORTIO terminates
the I/O request and passes SS$_ILLIOFUNC status back to the $QIO caller.
Figure 4–1 depicts the layout of the FDT.
Figure 4–1 Layout of Function Decision Table (FDT)
Buffered Function Mask
Procedure value of upperlevel FDT action routine for
I/O function 0 or EXE$ILLIOFUNC
I/O function 1 or EXE$ILLIOFUNC
I/O function 63 or EXE$ILLIOFUNC
FDT action routine vector slots 2 through 62
Procedure value of upperlevel FDT action routine for
Procedure value of upperlevel FDT action routine for
FDT action routine
vector
A driver uses the following three macros in sequence to create and initialize its
FDT:
FDT_INI—Creates, labels, and initializes an FDT
4–4