Start Input/Output
In MVS/370 and successor versions of IBM mainframe operating systems, Start Input/Output is a macro instruction and a "branch entry" for low-level device access, where the programmer is responsible for providing a list of device-specific CCWs, that is, a channel program, to be executed by I/O channels, control units and devices and a number of "exits", several of which may be immediate returns to the Input/Output Supervisor. Invokers of STARTIO must be in supervisor mode and key 0. STARTIO interfaces directly with the IOS component of MVS.
Differences from Execute Channel Program (EXCP)
Start Input/Output differs from EXCP and EXCPVR in the following fundamental way: Start Input/Output is a low level facility that supports, e.g., selection of channel paths, selection of exposures while Execute Channel Program is a high level facility that supports, e.g., CCW translation, page fixing, serialization of related requests, VIO.Callers of Execute Channel Program must be in TCB mode. While IBM documents EXCPVR as being privileged, some unprivileged access method code uses it for SAM-E processing of DASD data sets. Except for some special cases, an application may only use Execute Channel Program for a Data Control Block that it has OPENed.
Callers of STARTIO must be privileged, must page fix all storage areas related to the request and must use global storage for the SRB/IOSB. They may refer to any device that has a real UCB, even if that device is not allocated to an address space, that is, the device need not be OPENed.
Initiation and Completion Sequences
STARTIO's initiation sequence, usually referred to as its "front end", may be in TCB mode or in SRB mode. STARTIO's termination sequence, usually referred to as its "back end", is always in SRB mode.STARTIO always utilizes an SRB/IOSB pair. The SRB is utilized to schedule processor activity, as required, on any available processor, in connection with the related I/O request, as the I/O request is not necessarily run by the processor in which the caller is running. The IOSB describes the related I/O request, and passes parameters to and receives responses from IOS. IOS generally calls appendages in enabled SRB mode, but in special cases calls an appendage as a Disabled Interrupt Exit.