Specifications
Operating System Routines
EXE$READLOCK, EXE$READLOCKR
EXE$READLOCK, EXE$READLOCKR
Validate and prepare a user buffer for a direct-I/O, DMA read 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 1, indicating a read function
IRP$W_STS IRP$V_FUNC set, indicating a read 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$READLOCK and EXE$READLOCKR are called by a driver FDT routine at
IPL$_ASTDEL.
Description
A driver typically calls EXE$READLOCKR instead of EXE$READLOCK 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 write to 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$READLOCK or
EXE$READLOCKR for buffered I/O operations.
3–52