The V-Series Input/Output operation is based on the handling of I/O Control Blocks (IOCB). The IOCB implementation provides the following main features:
The instructions used to interface to the I/O subsystem (IOS) are:
To initialize the I/O subsystem, a WHR (BF=05) is executed. This establishes the location of the System IOCB Memory Area. The System IOCB memory area contains all the descriptors for all the I/OI's to be fired. It also contains other data structures which are used by the software and IOS.
The IOCB is an integral part of the interface to the IOS. It is built by software. CIO may or may not be used to contribute to its construction. An IOCB is used by the processor during SPIO and by the IOS while the I/O is executing. Once the I/O completes, software may reference it to determine the status of the completed I/O. Finally, the IOC instruction references it to unnail the Memory Area associated with the I/O Buffer.
Three is one IOCB for each I/O that is executing. An IOCB for an I/O that is executing MUST NOT be disturbed by software to prevent unpredictable results. All the IOCB's reside in the System IOCB Memory Area; they are located on modulo 100 boundaries.
The notification to the software of an I/O completion is done via one of two asynchronous interrupts. They are:
With each of these two types of I/O complete is associated a FIFO Queue. When an I/O complete interrupt occurs, an entry is pushed into the corresponding I/O Complete Queue (Normal or Real Time). The entry in each case is a pointer to the IOCB for an I/O that was fired. The PIQ instruction is used to pop these Queues.