I/O Request Block – @IORB

The I/O Request Block (IORB) defines an I/O request.  The IORB may be for an active I/O request being processed by the device, it may be a queued request waiting on a device or it may be a completed I/O request.

An IORB is scheduled to a device by the TXXSIO (Schedule I/O) module.  The UCB has a pointer to a queue of IORB requests.  The top IORB on the UCB queue is the active request.

@IORB    DSECT ,                                                     
IORBNEXT DS    A                  NEXT IORB ON CHAIN                 
IORBUCB  DS    A                  UCB ADDRESS                        
IORBIOB  DS    A                  IOB ADDRESS                        
IORBCCW  DS    A                  CCW ADDRESS                        
IORBTCB  DS    A                  TCB TO BEE DISPATCHED ON COMPLETION
IORBDIE  DS    A                  DISABLED EXIT ROUTINE              
IORBPCI  DS    A                  PCI EXIT ROUTINE                   
IORBERR  DS    A                  ERROR EXIT ROUTINE                 
*                                                                    
IORBFLAG DS    X                  FLAGS                              
IORBFSEN EQU   X'80'              RESCHEDULE FOR SENSE               
IORBOFLN EQU   X'01'              SECHED I/O TO OFFLINE DEVICE       
*                                                                    
IORBECBC DS    X                  I/O COMPLETION CODE                
IORBSEN0 DS    X                  SENSE BYTE ZERO                    
IORBSEN1 DS    X                  SENSE BYTE ONE                     
IORBCSW  DS    XL8                CSW                                
*                                                                    
IORBWORK DS    XL64               WORK AREA

The IORBNEXT field is used to maintain the IORB queue off the UCB.  They are queued oldest to newest.  IORBUCB points to the UCB the I/O request is for.  The IORBIOB points to the IOB associated with the EXCP request that created the IORB.  The IORBCCW points to the CCW program.

IORBTCB points to a TCB that will be added to the dispatch chain when the I/O is complete.  The TCB is supplied by the caller of the TXXSIO routine.  The TCB PSW should point to a routine that will handle the completion of the I/O request.  The TCBDIE field contains the address of a routine that will be called from the I/O Interrupt routine.

The status fields (IORBECBC, IORBSEN0, IORBSEN1, and IORBCSW) return the status of the completed I/O request.

The IORBWORK is a 64 byte work area to be used by TXXSIO.

[Next – ]

Leave a Reply

Your email address will not be published. Required fields are marked *