When link editing modules as re-entrant, be sure that all the modules
and the macros they call are re-entrant. In a multiprocessing system
this is important because:
- Two tasks in the same address space, or in different address spaces
such as a program in LPA or common storage, making use of the module
might cause the module to be executed simultaneously on two different
processors.
- Asynchronous appendages can operate on one processor simultaneously
with an associated task on another processor.
- Enabled recovery routines can execute on any processor, not necessarily
on the one on which the error was detected.
The CSECTs must be unchanged during execution or their critical
sections must be explicitly serialized. The general method for ensuring
re-entrance of macros is to use the LIST and EXECUTE forms of the
macros with a dynamically acquired parameter list.