This document, Chapter 6 of a manual titled "The XQP and I/O Processing," details the Extended QIO Processor (XQP) in the context of VMS (Virtual Memory System) operating systems. It explains how the XQP handles user-initiated input/output (I/O) requests, especially those that go beyond the capabilities of the standard $QIO system service and device drivers.
The document breaks down I/O processing into three phases: I/O request preprocessing, driver-specific processing, and I/O postprocessing. The XQP intervenes to perform additional processing, particularly for non-transfer requests (like file access), handling bad blocks, and managing complex transfer requests where memory information is insufficient.
Key aspects covered include:
- XQP Initialization: How the XQP code is mapped and how it allocates and manages its "impure" (per-process) storage, which includes a private kernel stack, an XQP queue, and XQP data.
- XQP Call Interface: How user processes interact with the XQP via the $QIO system service and the structure of I/O Request Packets (IRPs).
- Internal Dispatching: The flow of control from the $QIO system service through the XQP's internal routines, including the Function Decision Table (FDT) and the Driver Dispatch Table (DDT).
- XQP Code Execution: The execution flow within the XQP, including the role of its dispatcher and how it handles requests by switching to its own internal stack.
- Processing in Secondary Context: How the XQP uses a secondary context to handle nested functions, saving and restoring the primary context.
- Window Turning: The complex process of mapping virtual file blocks to physical disk blocks, especially when the current "window" of mapping information is insufficient.
- Building the XQP I/O Packet: The structure and content of the XQP I/O buffer packet (AIB) used for data transfer.
- Checking Volume Status: How the XQP verifies that a file system volume is in the correct state for an operation.
- Queuing the I/O Packet: The mechanisms used to queue I/O packets to the XQP dispatcher, ensuring proper synchronization.
- Error Processing, Status, and Cleanup: How errors are detected, handled, and how the XQP cleans up file system structures after successful or failed operations.
- Event Notification: How the system notifies users of significant file system events.
- Termination of Processing: The final steps involved in completing an I/O operation, including unlocking resources and handling volume dismounts.
- Virtual I/O and Device I/O: The specific handling of virtual file system I/O within process context and device I/O through the I/O postprocessing queue.
The document frequently refers to figures and tables for detailed explanations of data structures (like IRPs, AIBs, and impure area layouts) and control flow. It is a highly technical document aimed at system programmers or those needing a deep understanding of VMS file system I/O handling.