Using re-entrant modules

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.