Use this system macro to obtain an available input/output block (IOB)
storage block address.
Format
- label
- A symbolic name can be assigned to the macro statement.
- BLOCK=R1|Rx
- This optional parameter specifies the register that will contain the
address of the block that was acquired. The default is R1. R0
can not be used.
- WKREG=Ry
- This optional parameter is used to define a work register to be used by
the macro service. There is no default. R0 can not be
used.
- TEST
- This parameter is used for testing and problem determination
purposes.
- NO
- It is intended that this is used for production systems. The code
to get IOBs expands in-line.
- YES
- This is used in a test environment when you want to generate code that
will go to a central routine (see the CL$GIOBC entry point in CLHV in the
CCSTOR CSECT) to get an IOB. It is useful in monitoring IOB list
accesses. It only takes effect if the global variable SBCTEST is set on
(B'1') within this routine.
The default is NO.
Entry Requirements
- Use this macro in the control program (CP) only.
- Programs invoking this macro must be running with a storage protection key
of zero, and be in 31-bit addressing mode.
- Programs can be processing in the entry control block (ECB) virtual memory
(EVM) or system virtual memory (SVM) address space.
Return Conditions
- Control is returned to the NSI.
- The TPF system is ended with a catastrophic error if there are no IOBs
available.
- When the TPF system is out of IOBs, the request fails and a system error
is issued.
- The register specified in the BLOCK parameter contains the storage block
address. If the BLOCK parameter was omitted, the storage block address
will be in R1 on output.
Programming Considerations
- This macro can be run on any I-stream.
- System work blocks should replace I/O control blocks for all system
functions. Exceptions should be made only for extremely performance
critical applications, such as DASD I/O operations.
- The address returned in the register specified in the BLOCK parameter is a
31-bit address, and may point to an IOB allocated above the 16 megabyte
boundary. Code must be running in 31-bit mode to access data above the
31-bit boundary.
- The condition code is not set to any specific value on a successful block
allocation, and should not be tested.
- System error dumps can occur when servicing a $GIOBC request.
See Messages (System Error and Offline) for more
information.
- If the TEST parameter is used in an online system, severe system
degradation results due to I/O constraints.
- The TEST parameter must only be used in test environments.
Examples
None.