in which the block resides. In general, an IOBLOK is queued from the
control block of the highest levelI/O unit (taken from device up to
channel) in the subchannel pathtkat is not available. Once the I/O operation is started, the IOBLOK is chained from the active IOBLOK pointer (RDEVAIOB) in the real device control block. Flags in the IOBLOK status fields may also indicate that a unit check has occurred,
that a sense is in progress, or that a fatalI/O error (unrecoverable)
has been recognized by error recovery procedures. AfterI/O control
releases control of theIOBLOK, it is stacked on the queue of IOBLOKS and CPEXBLOKs anchored at DMKDSPRQ in the dispatcher and control is
passed to the second-level interruption handler whose address is stored
inI/O INTERRUPTIONS I/O interruptions are either synchronous or asynchronous. Asynchronous
interruptions indicate the change in status of anI/O unit from the
not-ready to ready state or busy to not-busy state. IneitneL if the affected component has any pending requests queued fro. its control
block, they are restarted, and whether or not the given interrupt is
processed any further depends upon the status of the interrupting
component. Channel-available and control-unit-end interruptions restart
the interruptingcomponent. An asynchronous device end is passed to the
user if the device is dedicated; otherwise, the device is restarted.
An interruption is considered to be synchronous
device has a nonzero pointer to an activeIOBLOK. following processing occurs:
if the interrupting
In this case, the• If a unit check has occurred, a sense is scheduled, and when the
sense is completed, the appropriateERP is called. • If an ERP is currently in control of the task (indicated by a flag in
theIOBLOK), return the IOBLOK to the appropriate ERP. • If the operation is incomplete (for example, channel end is received
without device end), theIOBLOK is copied and the copy is stacked but
the originalIOBLOK remains attached to RDEVAIOB to receive the final
interrupt; then, the control unit and the channel is restarted.• If the operation is complete (that is, the device is available), the IOBLOK is detached fro. the device and stacked, and the device,
control unit and channel are restarted.
The restart operation usually dequeues the nextIOBLOK that is queued
to the restarted component and queues it to the next highercomponent in
the subchannel path.When the channel level is reached, a SIO is issued
and exit is taken to the dispatcher after handling any nonzero condition
codes as previously described.VIRTUAL I/O INTERRUPTIONS When an I/O interruption is received, the IOBLOK is stacked for
dispatching and control is passed to the address specified in theIOBIRA (interrupt return address) field. For operations requested by DftKVIOEl, the return address is DMKVIOIN (virtual interrupt return address). When DMKVIOIN receives control fro. the dispatcher, it loads the virtual
address of the unit with which the interruption is associatedfrom the IOBLOK and calls D!KSCNVU to locate the virtual device control blocks. 1-90 IBM VM/370 System Logic and Problem Deteraination--VQluae 1
control block of the highest level
channel) in the subchannel path
that a sense is in progress, or that a fatal
has been recognized by error recovery procedures. After
releases control of the
passed to the second-level interruption handler whose address is stored
in
interruptions indicate the change in status of an
not-ready to ready state or busy to not-busy state. In
block, they are restarted, and whether or not the given interrupt is
processed any further depends upon the status of the interrupting
component. Channel-available and control-unit-end interruptions restart
the interrupting
user if the device is dedicated; otherwise, the device is restarted.
An interruption is considered to be synchronous
device has a nonzero pointer to an active
if the interrupting
In this case, the
sense is completed, the appropriate
the
without device end), the
the original
interrupt; then, the control unit and the channel is restarted.
control unit and channel are restarted.
The restart operation usually dequeues the next
to the restarted component and queues it to the next higher
the subchannel path.
and exit is taken to the dispatcher after handling any nonzero condition
codes as previously described.
dispatching and control is passed to the address specified in the
address of the unit with which the interruption is associated