Specifications

Operating System Routines
EXE$WRITELOCK, EXE$WRITELOCKR
EXE$WRITELOCK, EXE$WRITELOCKR
Validate and prepare a user buffer for a direct-I/O, DMA write operation.
Module
SYSQIOFDT
Input
Location Contents
R0 Virtual address of buffer
R1 Number of bytes in transfer
R3 Address of IRP
R4 Address of current PCB
R5 Address of UCB
R6 Address of CCB
R7 Bit number of the I/O function code
Output
Location Contents
R0 SS$_NORMAL
R1 System virtual address of the process page-table
entry (PTE) that maps the first page of the buffer
R2 0, indicating a write function
IRP$W_STS IRP$V_FUNC clear, indicating a write function
IRP$L_SVAPTE System virtual address of the PTE that maps the
first page of the buffer
IRP$W_BOFF Byte offset to start of transfer in page
IRP$L_BCNT Size of transfer in bytes
Synchronization
EXE$WRITELOCK and EXE$WRITELOCKR are called by a driver FDT routine
at IPL$_ASTDEL.
Description
A driver typically calls EXE$WRITELOCKR instead of EXE$WRITELOCK when
it must lock multiple areas into memory for a single I/O request and must regain
control, if the request is to be aborted, to unlock these areas. A driver uses
either of these routines when it must read from the user-specified buffer and
it is not desirable to automatically deliver the IRP to the device unit after the
buffer has been successfully locked. A driver cannot use EXE$WRITELOCK or
EXE$WRITELOCKR for buffered I/O operations.
3–65