This document serves as a guide for system programmers and developers to understand and implement necessary changes for privileged-code applications and device drivers on OpenVMS Alpha Version 7.0. The core reasons for these changes are the introduction of 64-bit virtual addressing and kernel threads support.
OpenVMS Alpha Version 7.0 significantly extends the virtual address space for processes and the system to 8TB, allowing for greater physical memory utilization. Concurrently, kernel threads features enable process threads to execute concurrently on multiple CPUs in a multiprocessor system, which alters the traditional process structure, particularly the Process Control Block (PCB).
The guide is divided into three main parts:
- Part I: Privileged-Code Changes focuses on infrastructure modifications in OpenVMS Alpha Version 7.0 that directly impact existing privileged-code applications. This includes changes to I/O mechanisms (e.g., IRP, IRPE structures, MMGSTD$IOLOCK/UNLOCK routines), memory management (e.g., page table locations, PFN database format, working set lists), and kernel threads-specific fields and routines (e.g., CPU$LCURKTB, scheduling). It also outlines removed privileged symbols and their replacements. Developers are advised to recompile and relink their applications and resolve any identified issues.
- Part II: Enhancing Privileged-Code Applications provides recommendations for modifying user-written system services and device drivers to fully support and leverage 64-bit virtual addresses and kernel threads. This involves declaring 64-bit support for I/O functions, navigating mixed pointer environments, and utilizing new I/O mechanisms like the Direct I/O Buffer Map (DIOBM). For user-written system services, a new flag (PLV$M64BIT_ARGS) allows bypassing default sign-extension checks for 64-bit virtual addresses.
- Appendixes offer detailed descriptions of new and altered I/O routines, data structures, and kernel threads routines and macros referenced throughout the guide.
In essence, the document is a critical resource for ensuring compatibility and optimizing privileged software for the enhanced capabilities of OpenVMS Alpha Version 7.0.