DIAGNOSE Code X'2S' -- Channel Program Modification I Privilege class G
DIAGNOSE Code X'28' allows a virtual machine to correctly execute some chan­
nel programs modified after the Start I/O (SIO) instruction is issued and before the
input/ output operation is completed. The channel command word (CCW) modifi­
cations allowed are:
A Transfer in Channel (TIC) CCW modified to a No Operation (NOP) CCW
A TIC CCW modified to point to a new list of CCWs
A NOP modified to a TIC CCW.
When a virtual machine modifies a TIC CCW, it is modifying a virtual channel
program. CP has already translated that channel program and is waiting to execute
the real CCWs. The DIAGNOSE instruction, with Code X'28', must be issued to
inform CP of the change in the virtual channel program, so that CP can make the
corresponding change to the real CCW before it is executed. In addition, when a NOP CCW is modified to point to a new list of CCWs, CP translates the new
CCWs.
To be sure that the DIAGNOSE instruction is recognized in time to update the real
CCW chain, the virtual machine issuing the DIAGNOSE instruction should have a
high favored execution value and a low dispatching priority value. The CP SET
command should be issued:
SET FAVORED xx
SET PRIORITY nn
where xx has a high numeric value and nn has a low numeric value. The virtual
machine issuing the DIAGNOSE Code X'28' must be in the supervisor mode at the
time it issues the DIAGNOSE instruction.
Entry Values: When DIAGNOSE Code X'28' is issued, the Rx register contains the
address of the TIC or NOP CCW that was modified by the virtual machine. The
Ry register contains the device address in bits 16 through 31. Rx and Ry cannot be
the same register. The addresses specified in the Rx register, the new address in
the modified TIC CCW, and the new CCW list to which the modified TIC CCW
points must all be addresses that appear real to the virtual machine: CP knows
these addresses are virtual, but the virtual machine thinks they are real.
Condition and Completion Codes: The condition codes (cc) and completion codes
are as follows: cc=O The real channel program was successfully modified; register 15 contains
a zero.
cc= 1 There was probably an error in issuing the DIAGNOSE instruction. Reg­
ister 15 (RI5) contains one of the following completion codes:
R15= 1 The same register was specified for Rx and Ry.
R15=2 The device specified by the Ry register was not found. DIAGNOSE Instruction in a Virtual Machine 239.
R15=3 The address specified by the Rx register was not within the user's
storage space.
R15=4 The address specified by the Rx register was not doubleword
aligned. R15=5 A CCW string corresponding to the device (Ry) and address
(Rx) specified was not found.
R15=6 The CCW at the address specified by the Rx register is not a TIC
nor a NOP, or the CCW in the channel program is not a TIC nor
a NOP. R15=7 The new address in the modified TIC CCW is not within the
user's storage space.
R15=8 The new address in the modified TIC CCW is not double word
aligned.
R15= 11 The modified CCW may not be a NOOP with command chaining
if it is the last CCW in the real chain program.
cc=2 The real channel program cannot be modified because a channel end or
device end already occurred. Register 15 contains a 9. The virtual
machine should restart the modified channel program. DIAGNOSE Code X'2C' --Return DASD Start of LOGREC I Privilege class C, E, or F
Execution of DIAGNOSE Code X'2C' allows a user to find the location on the
disk of the error recording area, the number of error recording cylinders, and the
location of the first error record.
Entry Values: The register specified as Rx contains a one-byte code in the
low-order byte, indicating the function to be performed: X'OI' Return the DASD location of the start of the error recording area, and
the number of error recording cylinders. X'02' Return the HDRSTART value (DASD location of first error record). X'04' Return indication of whether there are frame records on the error
recording cylinders.
Exit Values: On return to the issuer of DIAGNOSE Code X'2C': 240 VM/SP System Programmer's Guide
If code '01' is specified: Register Rx contains the DASD location (in VM/SP
control program internal format) of the start of the error recording area. Ry
contains, in the low-order halfword, the number of error recording cylinders.
If code '02' is specified: Register Rx contains the DASD location of the first
error record (in CCPD format). The value actually points to the last frame
record written, or record 2 if no frame records present.
Previous Page Next Page