Control program
Programs that are included in the online environment, other than ECB-controlled programs, are collectively called the control program (known previously as the core resident control program). The control program runs in 64-bit addressing mode. Although such programs reside in z/TPF online file storage for system restarts, the programs are assigned to main storage to control online z/TPF system processing. These programs are link-edited together for online processing with the GNU linker (rather than the z/TPF linker).
Many programs within the control program are reentrant, in the context of simultaneous running on several I-stream engines. This means that the program is shared among all I-stream engines and the program references data through private registers and the prefix area in the I-stream engine. Such a program can, however, enter a critical region to update data that is shared among all I-stream engines, in which case a processor lock must be invoked when the data is updated. Nevertheless, within an I-stream engine such a reentrant program remains serially reusable; that is, the program runs to completion before being invoked by another Entry on the same I-stream engine.
In a multiple I-stream engine environment, register save areas for a reentrant control program component necessary to make nested subroutine calls are private to an I-stream engine. If save areas were held within the subroutines, as on a uniprocessor, the simultaneous use of such a component could fail unless the save areas were treated as shared data on which locking would be necessary. Such locking would cause prohibitive performance degradation, and frequently make a multiprocessing environment look like a uniprocessor. So, private save areas, also called stacks, are used in the z/TPF system to maintain reentrancy for control program components across multiple I-stream engines. In some operating systems, stacks are used to allow a routine to make recursive calls to itself. This cannot be done in the z/TPF system.
A set of pointers to the private stacks is held in the prefix area of each I-stream engine. The stacks are classified according to the control program component that uses the area; for example, the SVC save area.
