This document, a module from Educational Services, provides an in-depth look into various aspects of device drivers within the VAX/VMS operating system. It focuses on the mechanisms and components that interact with or influence device drivers, enabling system administrators and developers to understand, develop, and integrate custom hardware.
Key areas covered include:
- Ancillary Control Processes (ACPs): These processes interface between user I/O requests and device drivers, performing supplemental functions like preprocessing I/O requests or enabling non-privileged processes to execute privileged operations. The document details their creation, associated data structures (ACP Queue Block, Volume Control Block, Unit Control Block), consistency checking, and operational flow.
- Pseudo-Devices: A mechanism for multiple users to share non-shareable devices, where a pseudo-device driver passes I/O Request Packets (IRPs) to an ACP, which then assigns a real device and issues further I/O.
- Extended Queue Processors (XQPs): Presented as a functional equivalent to ACPs for Files-11, ODS-2 disk structures, but integrated directly into a process's P1 space rather than being a separate process. Topics include XQP caching, lock manager usage for file integrity, startup procedures, one-time initialization, and request dispatching.
- Class/Port Drivers and Terminal I/O: Describes the architectural separation of terminal drivers into port (hardware-specific) and class (device class-specific) components, facilitating easier hardware integration and I/O handling.
- Instruction Set Considerations: Offers guidance on efficient kernel mode coding techniques, such as data alignment, optimizing memory writes, and effective use of bit field instructions.
- Writing a Disk Driver: Outlines the necessary steps, including reusing existing code, implementing ODS-1 or ODS-2 file systems, defining disk geometry, and required modifications to system modules like INIT and MOUNT.
- Attention ASTs (Asynchronous System Traps): Explains this VMS feature that allows processes to receive notifications of device conditions without requiring an outstanding I/O request, enabling device control via high-level language routines and reducing overhead. The section details driver setup, interrupt service routines, and cancellation of ASTs.
- Connect-to-Interrupt: A crucial mechanism for real-time applications, allowing a process to directly control a device and achieve fast interrupt response. It covers system manager responsibilities for setup, $QIO parameters for user-supplied driver subroutines (initialization, start I/O, interrupt service, cancel I/O), mapping UNIBUS I/O space, shared buffers for data exchange, and procedures for connecting, starting, servicing, and canceling interrupts, as well as power failure recovery.
The document serves as a guide for understanding and implementing advanced device driver functionalities and system-level interactions within the VAX/VMS environment.