Specifications

Data Structures
1.12 I/O Request Packet (IRP)
Table 1–14 (Cont.) Contents of an I/O Request Packet
Field Name Contents
IRP$W_STS Status of I/O request. EXE$QIO initializes this field to 0. EXE$QIO, FDT
routines, and driver fork processes modify this field according to the current
status of the I/O request. I/O postprocessing reads this field to determine what
sort of postprocessing is necessary (for example, deallocate system buffers and
adjust quota usage).
Bits in the IRP$W_STS field describe the type of I/O function, as follows:
IRP$V_BUFIO Buffered-I/O function
IRP$V_FUNC Read function
IRP$V_PAGIO Paging-I/O function
IRP$V_COMPLX Complex-buffered-I/O function
IRP$V_VIRTUAL Virtual-I/O function
IRP$V_CHAINED Chained-buffered-I/O function
IRP$V_SWAPIO Swapping-I/O function
IRP$V_DIAGBUF Diagnostic buffer is present
IRP$V_PHYSIO Physical-I/O function
IRP$V_TERMIO Terminal I/O (for priority increment
calculation)
IRP$V_MBXIO Mailbox-I/O function
IRP$V_EXTEND An extended IRP is linked to this IRP
IRP$V_FILACP File ACP I/O
IRP$V_MVIRP Mount-verification I/O function
IRP$V_SRVIO Server-type I/O
IRP$V_KEY Encrypted function (encryption key address at
IRP$L_KEYDESC)
IRP$L_SVAPTE For a direct-I/O transfer, virtual address of the first page-table entry (PTE) of
the I/O-transfer buffer, written here by the FDT routine locking process pages;
for buffered-I/O transfer, address of a buffer in system address space, written
here by the FDT routine allocating buffer.
IOC$INITIATE copies this field into UCB$L_SVAPTE before transferring
control to a device driver start-I/O routine.
I/O postprocessing uses this field to deallocate the system buffer for a buffered-
I/O transfer or to unlock pages locked for a direct-I/O transfer.
IRP$W_BOFF Byte offset into the first page of a direct-I/O transfer. FDT routines calculate
this offset and write the field.
For buffered-I/O transfers, FDT routines must write the number of bytes to be
charged to the process in this field because these bytes are being used for a
system buffer.
IOC$INITIATE copies this field into UCB$W_BOFF before calling a device
driver start-I/O routine.
I/O postprocessing uses IRP$W_BOFF in conjunction with IRP$L_BCNT and
IRP$L_SVAPTE to unlock pages locked for direct I/O. For buffered I/O, I/O
postprocessing adds the value of IRP$W_BOFF to the process byte count
quota.
(continued on next page)
1–47