Specifications
Operating System Routines
EXE$MODIFYLOCK, EXE$MODIFYLOCKR
EXE$MODIFYLOCK, EXE$MODIFYLOCKR
Validate and prepare a user buffer for a direct-I/O, DMA read/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 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$MODIFYLOCK and EXE$MODIFYLOCKR are called by a driver FDT
routine at IPL$_ASTDEL.
Description
A driver typically calls EXE$MODIFYLOCKR instead of EXE$MODIFYLOCK
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 both read and 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$MODIFYLOCK or EXE$MODIFYLOCKR for buffered I/O operations.
3–40