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$L_BCNT Byte count of the I/O transfer. FDT routines calculate the count value and
write the field. IOC$INITIATE copies the low-order word of this field into
UCB$W_BCNT before calling a device driver’s start-I/O routine.
For a buffered-I/O-read function, I/O postprocessing uses IRP$L_BCNT to
determine how many bytes of data to write to the user’s buffer.
The field IRP$W_BCNT points to the low-order word of this field to provide
compatibility with previous versions of the operating system.
IRP$W_STS2 Second word of I/O request status. 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.
Bits in the IRP$W_STS2 field describe the type of I/O function, as follows:
IRP$V_START_PAST_HWM I/O starts past file highwater mark.
IRP$V_END_PAST_HWM I/O ends past file highwater mark.
IRP$V_ERASE Erase I/O function.
IRP$V_PART_HWM Partial file highwater mark update.
IRP$V_LCKIO Locked I/O request, as used by DECnet
direct I/O.
IRP$V_SHDIO Shadowing IRP.
IRP$V_CACHEIO I/O using VBN cache buffers.
IRP$V_WLE I/O uses a write log entry.
IRP$V_CACHE_SAFE Request has been checked through cache.
IRP$V_NOCACHE IO$M_NOVCACHE was set in the QIO
function.
IRP$L_IOST1 First I/O status longword. IOC$REQCOM and EXE$FINISHIO(C) write
the contents of R0 into this field. The I/O postprocessing routine copies the
contents of this field into the users IOSB.
EXE$ZEROPARM copies a 0 and EXE$ONEPARM copies p1 into this field.
This field is a good place to put a $QIO request argument (p1 through p6)or
a computed value.
This field is also called IRP$L_MEDIA.
IRP$L_IOST2 Second I/O status longword. IOC$REQCOM, EXE$FINISHIO, and
EXE$FINISHIOC write the contents of R1 into this field. The I/O
postprocessing routine copies the contents of this field into the user’s IOSB.
The low byte of this field is also known as IRP$B_CARCON. IRP$B_
CARCON contains carriage control instructions to the driver. EXE$READ
and EXE$WRITE copy the contents of p4 of the users I/O request into this
field.
IRP$L_ABCNT Accumulated bytes transferred in virtual I/O transfer. IOC$IOPOST reads
and writes this field after a partial virtual transfer.
The symbol IRP$W_ABCNT points to the low-order word of this field to
provide compatibility with previous versions of the operating system.
IRP$L_OBCNT Original transfer byte count in a virtual I/O transfer. IOC$IOPOST reads this
field to determine whether a virtual transfer is complete, or whether another
I/O request is necessary to transfer the remaining bytes.
The symbol IRP$W_OBCNT points to the low-order word of this field to
provide compatibility with previous versions of the operating system.
(continued on next page)
1–48